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_0WAIT_OBJECT_0 之间+ (对象数– 1)

    如果 bWaitForAll 是 TRUE,所有对象收到信号(可用)。 如果 bWaitForAll 是 FALSE,返回值– WAIT_OBJECT_0 是在数组中的索引终止对象的对象(可用)。

  • WAIT_OBJECT_0 + (对象数)

    在 dwWakeMask 指定的操作可在线程的输入队列。

  • WAIT_ABANDONED_0WAIT_ABANDONED_0 之间+ (对象数– 1)

    如果 bWaitForAll 是 TRUE,所有对象收到信号,并且至少一对象是被放弃的mutex对象。 如果 bWaitForAll 是 FALSE,返回值– WAIT_ABANDONED_0 是在数组中的索引满足等待放弃的mutex对象。

  • WAIT_TIMEOUT

    dwTimeOut 指定的超时间隔过期,而不必等待成功。

备注

如果 bWaitForAll 是 TRUE,Lock 将成功返回,当所有同步对象同时变为终止状态。 如果 bWaitForAll 是 FALSE,Lock 将返回,在一个或多个同步对象变为终止状态。

如果 Lock 无法立即返回,它比在 dwTimeOut 参数指定的毫秒数将一直不能有多在返回之前。 如果 dwTimeOutINFINITE,Lock 不会返回,直到对对象的使用中获取或在 dwWakeMask 指定条件匹配。 否则,因此,如果 Lock 可以获取同步对象,它将成功返回;否则,它将返回失败。

要求

Header: afxmt.h

请参见

参考

CMultiLock Class

层次结构图