互斥:當多個線程訪問同一個全局變量,或者同一個資源(比如打印機)的時候,需要進行線程間的互斥操作來保證訪問的安全性。
臨界區、互斥體、事件和信號量都可以實現線程互斥.但如果僅僅需要實現互斥功能,推薦前兩種。
兩者的區別:
1、臨界區只能用於進程內的線程互斥,性能較好。
2、互斥體屬於內核對象,可以用於進程間的線程互斥,性能較差。
3、線程在沒有正常退出互斥區而意外終結時,互斥體可以復位,但臨界區不行.。
線程同步:當有多個線程同時執行時,可能需要線程按照一定的順序執行,比如:線程A負責將要處理的數據讀取到內存中,而線程B
負責分析這些數據,此時,應該是線程A執行完畢再執行線程B才有意義,這個時候就需要進行線程的同步控制。
可以用於線程同步控制的對象:事件和信號量。
兩者的區別:
1、都是內核對象,使用完畢后應該關閉句柄。
2、信號量可以用於相當復雜的線程同步控制.。
