MFC中的執行緒相關
阿新 • • 發佈:2019-02-06
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);
}