c++多线程中COUT语句引起的问题

#include<iostream>#include<windows.h>usingnamespacestd;HANDLEhMutex=NULL;DWORDWINAPIF... #include<iostream>
#include<windows.h>
using namespace std;
HANDLE hMutex=NULL;
DWORD WINAPI Fun(LPVOID lpParameter)
{
for(int i=0;i<10;i++)
{
WaitForSingleObject(hMutex,INFINITE);
cout<<" fun thread display!"<<endl;
Sleep(100);
ReleaseMutex(hMutex);
}
return 0L;
}
void main()
{
HANDLE hThread=CreateThread(NULL,0,Fun,NULL,0,NULL);
hMutex=CreateMutex(NULL,FALSE,"screen");
CloseHandle(hThread);
for(int i=0;i<10;i++)
{
WaitForSingleObject(hMutex,INFINITE);
cout<<"main thread display!"<<endl;
Sleep(100);
ReleaseMutex(hMutex);
}
}
以上一段多线程的小程序,在VC6.0上运行结果如下图所示,为什么第一次FOR 循环时主线程与FUN线程的COUT语句在争抢而以后的9次没有争抢呢?而且我还加了互斥量mutex.请高手赐教,感激涕零!
展开
 我来答
百度网友c7e1877
2018-02-14 · TA获得超过4670个赞
知道大有可为答主
回答量:4996
采纳率:81%
帮助的人:1427万
展开全部
在另一个问题里看到了截图。这和VC对标准库ostream的实现有关吧(输出操作是否加线程锁等),第一次<<endl没有将stdout缓冲区flush到控制台输出上。可以多试几个VC版本,还有用C标准库的printf试试
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式