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


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

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

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

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

可以用於線程同步控制的對象:事件和信號量。

兩者的區別:
1、都是內核對象,使用完畢后應該關閉句柄。
2、信號量可以用於相當復雜的線程同步控制.。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM