MFC 多线程—— CMutex类使用

    互斥对象可以在进程间使用,而临界区对象只能在同一进程的各个线程间使用。虽然互斥对象也可用于同一进程的各个线程间,但是在这种情况下,使用临界区对象会更节省系统资源,更有效率。
以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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值