CMultiLock::Lock

DWORD Lock( DWORD dwTimeOut = INFINITE, BOOL bWaitForAll = TRUE, DWORD dwWakeMask = 0 );

返回值:若封锁失败,则返回-1,否则返回下列值之一:
·WAIT_OBJECT_0和WAIT_OBJECT_0 + (对象数-1)之间。
若bWaitForAll为TRUE,那么所有对象都被标记(有效)。若bWaitForAll为FALSE,那么返回值——WAIT_OBJECT_0 就是对象数组中被标记(或有效)对象的索引。
·WAIT_OBJECT_0 + (对象的个数)。
在线程输出队列中dwWakeMask 指定的事件有效。
·WAIT_ABANDONED_0和WAIT_ABANDONED_0 + (对象数-1)之间。
若bWaitForAll为TRUE,那么所有的对象都被标记,并且至少某一对象为被遗弃的mutex对象。若bWaitForAll为FALSE,那么返回值——WAIT_ABANDONED_0就是对象数组中满足等待条件的被遗弃的mutex对象的索引。
·WAIT_TIMEOUT
等待失败,超过dwTimeOut指定的时间。

参数:
dwTimeOut指定等待同步对象有效(被标记)的时间。若该值为INFINITE,那么Lock函数在返回前一直等到对象被标记。
bWaitForAll指定返回前是否正在等待的所有对象都必须同时被标记。若该值为FALSE,那么Lock函数将返回任一被标记的被等待的对象。
dwWakeMask指定允许中断等待的其它条件。如果需要该参数有效选择项的完整列表,请参阅“Win32程序员参考”中的MsgWaitForMultipleObjects。

说明:
调用该函数获取由提供给CMultiLock构造函数同步对象控制的一个或多个资源的访问。若bWaitForAll为TRUE,那么一旦所有的同步对象同时被标记,则Lock函数将成功返回。否则若bWaitForAll为FALSE,那么一旦一个或多个同步对象被标记,则Lock函数将返回。
若Lock函数不能立即返回,那么在返回前,它等待的时间将不会超过参数dwTimeOut指定的毫秒数。若dwTimeOut为INFINITE,那么直到访问了要获取的对象或遇到了dwWakeMask指定的条件,Lock函数才返回。否则,若Lock函数能够获取一个同步对象,那么它将成功返回。否则,它将返回失败。