1. 程式人生 > >win 線程同步總結

win 線程同步總結

mfc

1.原子操作
用於一般單個變量的同步。
用相關的 api 鎖定一個變量
如:InterlockedIncrement(&n)
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/wdm/nf-wdm-interlockedincrement
2.臨界區 就是原子操作的升級版鎖定代碼塊
EnterCriticalSection與LeaveCriticalSection 之間
https://msdn.microsoft.com/en-us/library/ms684169(v=vs.85).aspx
3.互斥體臨界區升級版 用於多不在同個進程互斥鎖
CreateMutex創建鎖
OpenMutex打開鎖也就是其它進程就不能進來了
ReleaseMutex 釋放鎖也就是與互斥體沒有關系了
通過用WaitForSingleObject 來來回切換
方式:
當創建一個互斥體時它處於激發態。也就是鎖是打開的。
任何一個線程進程調用了WaitForSingleObject時它立刻返回使處於非激發態。表示被占用。通過參數或ReleaseMutex 來取決釋放。
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=ZH-CN&k=k(MFCAPPLICATION1DLG%2FWaitForSingleObject);k(WaitForSingleObject);k(DevLang-C%2B%2B);k(TargetOS-Windows)&rd=true
4.信號量就是可以多個鎖
5.事件是最最高級 可以手動改變他激發態與非激發態。CreateEvent
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=ZH-CN&k=k(MFCAPPLICATION1DLG%2FCreateEventW);k(CreateEventW);k(DevLang-C%2B%2B);k(TargetOS-Windows)&rd=true

win 線程同步總結