行云

行至水穷处,坐看云起时。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

目的本来是这样的:
有两个线程A,B。A在某个循环中等待线程B中的某个事件发生。比如在一个网络运用中,A是主线程,B是接收线程。A发送了一个请求到服务器,
然后等待服务器返回响应或超时重发,当B接收到响应时通知A。
先看如下代码:

int main()
{
    HANDLE hMutex = CreateMutex(NULL, FALSE, NULL);
    WaitForSingleObject(hMutex, INFINITE);

    return 0;
}

WaitForSingleObject总是立即返回,为什么WaitForSingleObject没有起作用??
原来是我理解错了,范了个低级错误。WaitForSingleObject本来就该立即返回的。
第一行创建了一个匿名互斥量,初始时没有任何线程拥有这个互斥量,所以WaitForSingleObject(hMutex, INFINITE)
总是立即返回。如果在线程B中调用了WaitForSingleObject(hMutex, INFINITE),在其调用ReleaseMutex(hMutex)
之前,线程A中的WaitForSingleObject(hMutex, INFINITE)都不会返回。

单个线程总是顺序执行的,也就不需要同步与互斥。同步与互斥总是涉及到2个及以上的线程。
我本来是应该用信号量或事件才对的……

posted on 2013-03-07 14:55  windflying  阅读(882)  评论(0编辑  收藏  举报