線程間的通信、同步方式與進程間通信方式
阿新 • • 發佈:2017-08-31
結果 全局變量 應用程序 聲明 是否 請求 bsp 方式 可能
1.線程間的通信方式
1)使用全局變量(由於多個線程可能更改全局變量,因此全局變量最好聲明為volatile)
2) 使用消息實現通信
3)使用事件CEvent類實現線程間的通信
2.同步/異步(C端)
同步:在C端發出一個功能調用時,沒有得到結果之前就不返回
異步: 一個請求通過事件觸發後,得到服務器處理後才處理完畢
3. 阻塞/非阻塞(S端)
阻塞:阻塞調用是指調用結果返回之前,當前線程會被掛起(線程進入非可執行狀態,在這個狀態下,cpu不會給線程分配時間片,即線程暫停運行)。函數只有在得到結果之後才會返回。
非阻塞:非阻塞和阻塞的概念相對應,指在不能立刻得到結果之前,該函數不會阻塞當前線程,而會立刻返回。
4.
1.) 同步,就是我客戶端(c端調用者)調用一個功能,該功能沒有結束前,我(c端調用者)死等結果。
2. )異步,就是我(c端調用者)調用一個功能,不需要知道該功能結果,該功能有結果後通知我(c端調用者)即回調通知。
3.) 阻塞, 就是調用我(s端被調用者,函數),我(s端被調用者,函數)沒有接收完數據或者沒有得到結果之前,我不會返回。
4. )非阻塞, 就是調用我(s端被調用者,函數),我(s端被調用者,函數)立即返回,通過select通知調用者
同步IO和異步IO的區別就在於:數據訪問的時候進程是否阻塞!
阻塞IO和非阻塞IO的區別就在於:應用程序的調用是否立即返回!
線程間的通信、同步方式與進程間通信方式