MFC-临界区

CCriticalSection g_criSection;//临界区
CWinThread* funone;
CWinThread* funtwo;
UINT FunOne(LPVOID pParam)
{ //给数组赋值
g_criSection.Lock();//给所有使用的资源上锁
for(int i =0; i < 4; i++){
g_charArray[i] = 'S';
}
g_criSection.Unlock(); //给使用的资源解锁
return 0;

}

UINT FunTwo(LPVOID pParam)
{//得到数组值
g_criSection.Lock();//给所有使用的资源上锁
for(int i =0; i < 4; i++){
g_charArray[i] = 'B';
}
funone->ResumeThread();//启动之前被挂起的线程。
g_criSection.Unlock(); //给使用的资源解锁

return 0;
}

funone = ::AfxBeginThread(FunOne,NULL,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); //FunOne给数组赋值全为S
funtwo = ::AfxBeginThread(FunTwo,NULL); //FunTwo也给数组赋值全为B

第一个线程创建之后就处于挂起状态
第二个线程创建之后就立即运行
使用ResumeThread()运行挂起的线程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值