目的本来是这样的:
有两个线程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个及以上的线程。
我本来是应该用信号量或事件才对的……