我们常常对需要多线程共同访问的资源进行加锁,但当在同一个线程中时,一个锁还没离开之前,还可以加一道锁。。。
例:
CRITICAL_SECTION cs;
InitializeCriticalSection(&cs);
EnterCriticalSection(&cs);
EnterCriticalSection(&cs); //可以运行到这里,不会形成死锁!
LeaveCriticalSection(&cs);
当一个socket在线程A正在recv或send数据,另一个线程B进行closesocket操作,则会造成死锁