我有一個基本的Win32控制檯應用程序,它可以調用一個命名管道,然後在一個while(true)循環內調用Sleep(1000)。經過一百次迭代後,睡眠(1000)將掛起。我看不出有什麼理由。爲什麼睡眠(1000)導致死鎖?
好了,所有我做的是這個MSDN樣本中發現的代碼,逐字記錄和運行它的服務器:http://msdn.microsoft.com/en-us/library/aa365601%28VS.85%29.aspx
然後我藉此MSDN樣本客戶端發現這裏找到的代碼: http://msdn.microsoft.com/en-us/library/aa365592%28VS.85%29.aspx,我修改它,以便它使所有的調用代碼到一個單獨的方法,然後從內部main()調用它像這樣:
while (true)
{
sendmsg();
Sleep(1000);
}
我要補充一點,這個問題發生在我運行多個客戶端的實例,例如大約4或5個實例。我看不出有什麼理由。沒有任何同步發生。代碼與兩個鏈接中的代碼完全相同,除了在循環中運行客戶端代碼的更改以外,每次調用後都使用Sleep(1000)。
發佈一些代碼。 – Joe 2010-02-06 02:54:25