CCriticalSection類的用法非常簡單,步驟如下:
定義CCriticalSection類的壹個全局對象(以使各個線程均能訪問),如CCriticalSection critical_section;
在訪問需要保護的資源或代碼之前,調用CCriticalSection類的成員Lock()獲得臨界區對象: critical_section.Lock();
在線程中調用該函數來使線程獲得它所請求的臨界區。如果此時沒有其它線程占有臨界區對象,則調用Lock()的線程獲得臨界區;否則,線程將被掛起,並放入到壹個系統隊列中等待,直到當前擁有臨界區的線程釋放了臨界區時為止。
訪問臨界區完畢後,使用CCriticalSection的成員函數Unlock()來釋放臨界區:critical_section.Unlock();
再通俗壹點講,就是線程A執行到critical_section.Lock();語句時,如果其它線程(B)正在執行critical_section.Lock();語句後且critical_section. Unlock();語句前的語句時,線程A就會等待,直到線程B執行完critical_section. Unlock();語句,線程A才會繼續執行。