共用方式為


CCriticalSection::Lock

呼叫此成員函式為關鍵區段物件的存取權。

BOOL Lock( ); 
BOOL Lock(
   DWORD dwTimeout 
);

參數

  • dwTimeout
    Lock 忽略這個參數的值。

傳回值

如果不是零,則函式成功,則為 0。

備註

Lock 是不會傳回的封鎖呼叫,直到關鍵區段物件收到信號 (可供使用)。

如果逾時的時間是必要的,您可以使用 CMutex 物件而不是 CCriticalSection 物件。

如果 Lock 配置不必要的系統記憶體,記憶體不足的例外狀況 (型別 CMemoryException) 會自動擲回。

範例

這個範例會透過控制項存取共用資源 (靜態 _strShared 物件) 的存取示範巢狀的關鍵方法使用共用 CCriticalSection 物件。 SomeMethod 函式顯示更新共用資源以安全的方式。

//Definition of critical section class
class CMyCritSectClass
{
   static CString _strShared; //shared resource
   static CCriticalSection _critSect;
public:
   CMyCritSectClass(void) {}
   ~CMyCritSectClass(void) {}
   void SomeMethod(void); //locks, modifies, and unlocks shared resource
};

//Declaration of static members and SomeMethod
CString CMyCritSectClass::_strShared;
CCriticalSection CMyCritSectClass::_critSect;

void CMyCritSectClass::SomeMethod()
{
   _critSect.Lock();
   if (_strShared == "")
      _strShared = "<text>";
   _critSect.Unlock();
}

需求

Header: afxmt.h

請參閱

參考

CCriticalSection 類別

階層架構圖

CSingleLock::Lock