MFC 提供的六種多線程類分為兩類:同步對象(CSyncObject、CSemaphore、CMutex、CCriticalSection 和 CEvent)和同步訪問對象(CMultiLock 和 CSingleLock)。
當必須控制對資源的訪問以確保資源的完整性時,使用同步類。同步訪問類用於獲取對這些資源的訪問權。此文章描述各個類的使用時間。
若要確定應使用的同步類,請詢問以下一系列問題:
應用程序必須等到發生某事才能訪問資源(例如,在將數據寫入文件之前,必須先從通信端口接收它)嗎?
如果是,則使用 CEvent。
同一應用程序內一個以上的線程可以同時訪問此資源(例如,應用程序允許在同一文檔上最多同時打開五個帶有視圖的窗口)嗎?
如果是,請使用 CSemaphore。
可以有一個以上的應用程序使用此資源(例如,資源在 DLL 中)嗎?
如果是,請使用 CMutex。
如果不是,請使用 CCriticalSection。
從不直接使用 CSyncObject。它是其他四個同步類的基類。