凍結一旦我這是怎麼關閉套接字:關閉套接字()在一段時間
LINGER lingerStruct;
lingerStruct.l_onoff = 1;
lingerStruct.l_linger = 0;
setsockopt(Clients[iClientID].ClientSocket, SOL_SOCKET, SO_LINGER, (char*)&lingerStruct, sizeof(lingerStruct));
CancelIo((HANDLE)Clients[iClientID].ClientSocket);
shutdown(Clients[iClientID].ClientSocket, SD_BOTH);
closesocket(Clients[iClientID].ClientSocket); // << Hangs here
約2至10小時的運行時間和結賬超過500個插座後,它發生是隨機的插座不想要close和closesocket()永遠掛在關鍵部分(使用調試器發現這一點)。
我在做什麼錯了?
編譯:的Visual Studio 2010 SP1(C++) 操作系統:Windows Server 2008 R2 x64的
感謝。
如果您知道它正在等待臨界區對象,那麼您可以使用windbg中的命令!locks來確定哪個線程擁有哪些臨界區對象。這很可能是死鎖。 – nanda