我有一个基本的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