您的位置:首页 > 其它

MFC 多线程—— CMutex类使用

2016-11-15 23:29 330 查看
互斥对象可以在进程间使用,而临界区对象只能在同一进程的各个线程间使用。虽然互斥对象也可用于同一进程的各个线程间,但是在这种情况下,使用临界区对象会更节省系统资源,更有效率。
以CCriticalSection类的使用为例:

//定义全局CMutexhe CSingleLock类的对象
CMutex mutex;
CSingleLock singlelock(&mutex);
UINT WriteA(LPVOID pParam)
{
CEdit *pEdit = (CEdit*)pParam;
pEdit->SetWindowText(_T(""));

singlelock.Lock();
//锁定临界区,其他线程遇到singlelock.Lock()语句时要等待
//知道执行singlelock.Unlock()语句
for (int i = 0; i < 9; i++)
{
g_Array[i] = _T('A');
pEdit->SetWindowText(g_Array);
Sleep(1000);
}
singlelock.Unlock();
return 0;
}

UINT WriteB(LPVOID pParam)
{
CEdit *pEdit = (CEdit*)pParam;
pEdit->SetWindowText(_T("\0"));

singlelock.Lock();
//临界区资源
for (int i = 0; i < 9; i++)
{
g_Array[i] = _T('B');
pEdit->SetWindowText(g_Array);
Sleep(1000);
}
singlelock.Unlock();
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: