CMultiLock::Lock
调用此函数同步对象控件的一个或多个资源的访问提供给 CMultiLock 构造函数。
DWORD Lock(
DWORD dwTimeOut = INFINITE,
BOOL bWaitForAll = TRUE,
DWORD dwWakeMask = 0
);
参数
dwTimeOut
指定时间等待同步对象可用(终止)。 如果 INFINITE,Lock 将等待,直到对象在返回之前终止状态。bWaitForAll
指定任何对象是否等待了必须同时变为终止在返回之前。 如果 FALSE,Lock 将返回,则会等待的任一对象终止状态。dwWakeMask
指定允许中止等待的其他情况。 有关完整列表此参数中的可用选项,请参见。Windows SDK的 MsgWaitForMultipleObjects。
返回值
如果 Lock 失败,则返回– 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 指定的超时间隔过期,而不必等待成功。
备注
如果 bWaitForAll 是 TRUE,Lock 将成功返回,当所有同步对象同时变为终止状态。 如果 bWaitForAll 是 FALSE,Lock 将返回,在一个或多个同步对象变为终止状态。
如果 Lock 无法立即返回,它比在 dwTimeOut 参数指定的毫秒数将一直不能有多在返回之前。 如果 dwTimeOut 是 INFINITE,Lock 不会返回,直到对对象的使用中获取或在 dwWakeMask 指定条件匹配。 否则,因此,如果 Lock 可以获取同步对象,它将成功返回;否则,它将返回失败。
要求
Header: afxmt.h