簡述Windows線程同步的幾個方法
1)關鍵代碼段,InitializeCriticalSection(),EnterCriticalSection(),LeaveCriticalSection(),不能跨越進程,速度很快,又稱爲用戶方式同步。
2)除了用戶方式同步就是內核對象同步了。WaitForSingleObject(),WaitForMultiObject()……
注意:如果是一個線程對象,它處於“有信號”的時候說明它“可調度”,比如它結束了。
2-1)事件Event:CreateEvent(),SetEvent(),ResetEvent(),注意:Event對象可以設置爲自動,那麼Wait之後它會自動轉變爲無信號。
2-2)信標Semaphore:CreateSemaphore(),ReleaseSemaphore(),WaitForSingleObject(smph)的時候Count--,ReleaseSemaphore(smph)的時候Count++。
2-3)互斥體Mutex:CreateMutex(),ReleaseMutex(),和信標類似,但沒有“資源計數”這一概念。
進程間通信
1)Windows消息
2)共享內存,用CreateFileMapping()或者dll
3)網絡
4)命名管道
5)郵槽