多執行緒程式設計 執行緒間共享資料(臨界區 互斥鎖)

2021-08-14 15:10:46 字數 707 閱讀 2533

執行緒間共享資料的方法:

1、全域性物件;

2、堆物件(動態建立的物件);

任何時刻只允許乙個執行緒對共享資源進行訪問的方法:

1、臨界區(critical section);(首選)

2、互斥鎖(mutex);

臨界區和互斥鎖的區別:

mutex

critical section

效能和速度

慢(mutex是核心物件,執行相關函式時,需要使用者模式到核心模式的轉換)

快(不是核心物件,直接在使用者模式執行)

能否跨越程序邊界能不能

一、臨界區

要自己將臨界區的系統函式分裝成乙個類來使用。

class mythreadlock

; ~mythreadlock()

; void lockon()

; void lockoff()

;private:

critical_section m_lock;

};static mythreadlock threadlock;

執行緒1執行緒2

int main()

二、互斥鎖

#include handle hmutex;

執行緒1執行緒2

int main()

多執行緒程式設計 臨界區

1 windows api建立執行緒 include 包含相應標頭檔案 include dword winapi myfun1 lpvoid lpparameter 宣告執行緒函式 dword winapi myfun2 lpvoid lpparameter int main 主函式 else 如果...

Linux多執行緒臨界區問題

臨界區指的是乙個訪問共用資源 例如 共用裝置或是共用儲存器 的程式片段,而這些共用資源又無法同時被多個執行緒訪問的特性。當有執行緒進入臨界區段時,其他執行緒或是程序必須等待,有一些同步的機制必須在臨界區段的進入點與離開點實現,以確保這些共用資源是被互斥獲得使用,例如 semaphore。只能被單一執...

windows多執行緒同步 臨界區

推薦參考部落格 秒殺多執行緒第五篇 經典執行緒同步 關鍵段cs 關於臨界區的觀念,一般作業系統書上面都有。適用範圍 它只能同步乙個程序中的執行緒,不能跨程序同步。一般用它來做單個程序內的 快同步,效率比較高 windows中與臨界區有關的結構是 critical section,關於該結構體的內部結...