多线程的学习,执行情况和显示的效果不一致,求教 本帖最后由 yang2009001 于 2014-10-15 15:47:27 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我现在不是关心有没有拿到重复的票数,而是这2个线程,拿到了自己的对应票,却没有在拿到票之后打印出票号。票号按理论来讲是要100到1递减,但结果不是这样显示线程执行是不分先后的,就是说Fun1Proc在执行tickets--的时候Fun2Proc可能在执行cout,这时候Fun2Proc全部执行完了,Fun1Proc才执行完cout 问题来了,93号那张票,既然线程1抢到了,为何不是先输出DWORD WINAPI Fun1Proc(LPVOID lpParameter){ while(TRUE) { if(tickets>0) cout<<"thread1 sell ticket :"<<tickets--<<endl; /./93号线程执行完tickets-- 准备执行cout<< 输出的时候发送线程切换,去执行线程2了,然后又回来就发生这种现象了 else break; } return 0;}DWORD WINAPI Fun2Proc(LPVOID lpParameter){ while(TRUE) { if(tickets>0) cout<<"thread2 sell ticket :"<<tickets--<<endl; else break; } return 0;}多线程访问共享数据必须加锁 关于WTL的问题 DCOM不能连通 键盘消息 CHttpFile::Read()函数也能死机??? 为什么在工程文件夹里有些大工程会加入一个include子目录? 求助:关于PlaySound() 搞了好长时间了 CSocket:Attach? 弹出U盘 非常好奇,服务器集群是怎么实现的,比如IIS的集群服务 qt做moxa的头文件问题 关于MFC编辑文本框中利用SetDlgItemText显示字符串的问题 vc++ 图像采集
Fun1Proc在执行tickets--的时候
Fun2Proc可能在执行cout,
这时候Fun2Proc全部执行完了,
Fun1Proc才执行完cout
DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
while(TRUE)
{
if(tickets>0)
cout<<"thread1 sell ticket :"<<tickets--<<endl; /./93号线程执行完tickets-- 准备执行cout<< 输出的时候发送线程切换,去执行线程2了,然后又回来就发生这种现象了
else
break;
}
return 0;
}
DWORD WINAPI Fun2Proc(LPVOID lpParameter)
{
while(TRUE)
{
if(tickets>0)
cout<<"thread2 sell ticket :"<<tickets--<<endl;
else
break;
}
return 0;
}
多线程访问共享数据必须加锁