64,653
社区成员
发帖
与我相关
我的任务
分享
// MFC临界区类对象
CCriticalSection g_cs;
// 共享资源
char g_cArray[10];
UINT ThreadProc1(LPVOID pParam)
{
// 进入临界区
g_cs.Lock();
// 对共享资源进行写入操作
for (int i = 0; i < 10; i++)
{
g_cArray[i] = ’a’;
Sleep(1);
}
// 离开临界区
g_cs.Unlock();
return 0;
}
UINT ThreadProc2(LPVOID pParam)
{
// 进入临界区
g_cs.Lock();
// 对共享资源进行写入操作
for (int i = 0; i < 10; i++)
{
g_cArray[10 - i - 1] = ’b’;
Sleep(1);
}
// 离开临界区
g_cs.Unlock();
return 0;
}
void CSampleView::OnCriticalSectionMfc()
{
// 启动线程
AfxBeginThread(ThreadProc1, NULL);
AfxBeginThread(ThreadProc2, NULL);
// 等待计算完毕
Sleep(300);
// 报告计算结果
CString sResult = CString(g_cArray);
AfxMessageBox(sResult);