1. 程式人生 > >C++ 鎖,socket死鎖

C++ 鎖,socket死鎖

我們常常對需要多執行緒共同訪問的資源進行加鎖,但當在同一個執行緒中時,一個鎖還沒離開之前,還可以加一道鎖。。。

例:

                CRITICAL_SECTION cs;

InitializeCriticalSection(&cs);
EnterCriticalSection(&cs);
EnterCriticalSection(&cs);             //可以執行到這裡,不會形成死鎖!
LeaveCriticalSection(&cs);

當一個socket線上程A正在recv或send資料,另一個執行緒B進行closesocket操作,則會造成死鎖