1. 程式人生 > >MFC中的執行緒相關

MFC中的執行緒相關

CCriticalSection g_clsCriticalSection;  // MFC臨界區類物件
char g_cArray[10];              // 共享資源 

UINT ThreadProc20(LPVOID pParam)
{
 g_clsCriticalSection.Lock();        // 進入臨界區

 for (int i = 0; i < 10; i++)       // 對共享資源進行寫入操作
 {
  g_cArray[i] = 'a';
  Sleep(1);
 }
 g_clsCriticalSection.Unlock();      // 離開臨界區
 return 0;
}
UINT ThreadProc21(LPVOID pParam)
{
 g_clsCriticalSection.Lock();

 for (int i = 0; i < 10; i++)
 {
  g_cArray[10 - i - 1] = 'b';
  Sleep(1);
 }

 g_clsCriticalSection.Unlock();
 return 0;
}
……
void CSample08View::OnCriticalSectionMfc() 
{
 AfxBeginThread(ThreadProc20, NULL);
 AfxBeginThread(ThreadProc21, NULL);

 Sleep(300);

 CString sResult = CString(g_cArray);
 AfxMessageBox(sResult);
}