C++線程同步與互斥總結

互斥:當多個線程訪問同一個全局變量,或者同一個資源(好比打印機)的時候,須要進行線程間的互斥操做來保證訪問的安全性。安全

臨界區、互斥體、事件和信號量均可以實現線程互斥.但若是僅僅須要實現互斥功能,推薦前兩種。

二者的區別:
一、臨界區只能用於進程內的線程互斥,性能較好。
二、互斥體屬於內核對象,能夠用於進程間的線程互斥,性能較差。
三、線程在沒有正常退出互斥區而意外終結時,互斥體能夠復位,但臨界區不行.。 性能

線程同步:當有多個線程同時執行時,可能須要線程按照必定的順序執行,好比:線程A負責將要處理的數據讀取到內存中,而線程B
負責分析這些數據,此時,應該是線程A執行完畢再執行線程B纔有意義,這個時候就須要進行線程的同步控制。

能夠用於線程同步控制的對象:事件和信號量。spa

二者的區別:
一、都是內核對象,使用完畢後應該關閉句柄。
二、信號量能夠用於至關複雜的線程同步控制.。 線程

相關文章
相關標籤/搜索