象进入发信号状态为止。一个互斥对象不再被 线程拥有时, 它就进入发信号状态。 当一个进程要终止时, 它就进入发信号状态。 dwMilliseconds 参数可以设为 0,这意味着只检查 hHandle 参 数指定的对象是否处于发信号状态,而后立即返回。dwMilliseconds 参数设为 INFINITE,表示如果信号不出现将一直等下去。 这个函数的返回值如下 WaitFor SingleObject()函数使用的返回值 返回值 含义 WAIT_ABANDONED 指定的对象是互斥对象, 并且拥有这个互斥对象的线程在 没有释放此对象之前就已终止。此时就称互斥对象被抛弃。这 种情况下,这个互斥对象归当前线程所有,并把它设为非发信号状态 WAIT_OBJECT_0 指定的对象处于发信号状态 WAIT_TIMEOUT 等待的时间已过,对象仍然是非发信号状态再次声明,当一 个互斥对象不再被一个线程所拥有,它就处于发信号状态。此时 首先调用 WaitForSingleObject()函数的线程就成为该互斥对象的拥有者,此互 斥对象设为不发信号状态。当线程调用 ReleaseMutex()函数并传 递一个互斥对象的句柄作为参数时,这种拥有关系就被解除,互斥对象重新进入 发信号状态。 注意除 WaitForSingleObject()函数外,你还可以使用 WaitForMultipleObject()和 MsgWaitForMultipleO
bject()函数,它们可以等待 几个 对象变为发信号状态。这两个函数的详细情况请看 Win32 API 联机
文档。 3. 信号量 另一种使线程同步的技术是使用信号量对象。 它是在互斥的基础上建立的, 但信号量增加了资源计数的功能,预定数目的线程允许同时进
入