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