社区
C++ 语言
帖子详情
为什么多线程下使用cout输出不能在屏幕见到?
yunzhongjian
2004-12-31 11:21:00
在多线程的环境下,如果多个线程输出,使用std的cout输出字符到屏幕时,有时输出根本不会出现在屏幕上,但程序的确执行过cout输出语句了。改使用printf就没有问题了。 为什么std的cout会这样呢?请大家赐教!
...全文
1128
18
打赏
收藏
为什么多线程下使用cout输出不能在屏幕见到?
在多线程的环境下,如果多个线程输出,使用std的cout输出字符到屏幕时,有时输出根本不会出现在屏幕上,但程序的确执行过cout输出语句了。改使用printf就没有问题了。 为什么std的cout会这样呢?请大家赐教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sct
2005-09-07
打赏
举报
回复
学习
idler
2005-01-10
打赏
举报
回复
cout << flush;?
不确定。SGI的库是线程安全的。
step_by_step
2005-01-10
打赏
举报
回复
你把cout换成cerr就可以了,不要用缓冲了
gateh
2005-01-10
打赏
举报
回复
cout << flush才强制把缓冲内容写到屏幕上. 试试看.
yunzhongjian
2005-01-10
打赏
举报
回复
To questionboy():“可能是你其它的地方出錯了”
我可以十分肯定:我的程序肯定是运行到cout语句了,并继续往下运行了,
在cout语前或后加上printf语句都能正常的看到输出。那么你指的出错还有其它什么的吗?
yunzhongjian
2005-01-10
打赏
举报
回复
To0 snow810211(阳光): cerr 也一样
yunzhongjian
2005-01-10
打赏
举报
回复
To questionboy():“某個線程可能對屏慕的buffer沒有寫的權限”,我在同一进程里面开的线程也会对屏幕的BUFFER没有写权限吗?
我的环境是: redhat linux 9.0 g++ 编译, GTK+-2.0。
pacman2000
2005-01-04
打赏
举报
回复
加了缓冲刷新的话,肯定是可以显示的,应该是你的程序出了什么问题。
xunfengxxx
2005-01-04
打赏
举报
回复
cout 不是线程安全的 要靠自己去线程同步 比较麻烦
printf是线程安全的 也就是自己做了线程同步的处理了
学习
questionboy
2005-01-04
打赏
举报
回复
不知道你是在甚麼環境下運行的,但是我可以肯定的告訴你,一定是可以顯示的,能否顯示與多線程沒有關係,可能是你其它的地方出錯了,仔細找找看吧,我碰到最多的問題(不加鎖)不過是線程之間同時要顯示信息,造成顯示的信息錯亂(混在一起,或者僅僅某一個信息被忽略).提示你一下,你的某個線程可能對屏慕的buffer沒有寫的權限,造成你的困惑
snow810211
2005-01-04
打赏
举报
回复
cerr试试看
whoho
2005-01-04
打赏
举报
回复
标准中没要求标准库的线程安全性,但是很多库实现已经加入了
这个支持,比如VC.net附加的库, 还有SGI版本
cout 没有输出更`可能是缓冲区的刷新问题
yunzhongjian
2005-01-04
打赏
举报
回复
我用了一个全局锁来锁住cout,即在cout前加锁,在endl后解锁,但是有些地方的输出仍然看不到。
piaozi2003() : cout << endl; 已经清除了缓冲
allen_zhaozhencn
2004-12-31
打赏
举报
回复
应该是thread safe的问题.STL的容器与算法都不是线程安全的.
piaozi2003
2004-12-31
打赏
举报
回复
清除缓冲
beyondtkl
2004-12-31
打赏
举报
回复
cout 不是线程安全的 要靠自己去线程同步 比较麻烦
printf是线程安全的 也就是自己做了线程同步的处理了
lu1172101275
2004-12-31
打赏
举报
回复
没碰过
oyljerry
2004-12-31
打赏
举报
回复
cout线程不是安全的,用printf
嵌入式中,为什么
使用
cout
输出
会导致段错误,而
使用
printf 却不会
文章探讨了在嵌入式环境中,
使用
C++的
cout
输出
导致段错误而printf则不会的现象,主要分析了两者背后的机制:printf通过系统API直接
输出
,对
输出
流实现透明;而
cout
依赖于C++流库,若
输出
流未正确配置可能会引发问题。,
C++中Cerr和
Cout
的区别
本文详细介绍了C++中Cerr和
Cout
两个
输出
流对象的区别。
Cout
用于标准
输出
,支持缓冲,适合打印正常信息;而Cerr用于标准错误
输出
,不支持缓冲,用于
输出
错误信息,便于及时发现程序问题。文章还探讨了它们的流类型、重定向和线程安全性等特性,并通过示例代码加深理解。
C++的“双向对话”:用cin和
cout
实现输入与
输出
本文介绍了C++中cin和
cout
的基本用法,通过‘音响控制台’比喻讲解输入
输出
流的概念。详细说明了插入运算符和提取运算符的作用,展示了如何创建交互式程序,并解决了常见问题如空格处理。文章还提供了实际案例,帮助读者掌握基本的输入
输出
操作。
cin/
cout
性能问题讨论和优化⽅法
本文讨论了cin/
cout
的性能问题及优化方法。C++标准库默认将cin、
cout
与C标准库流对象同步,且cin和
cout
存在绑定关系,这会导致性能问题。可通过调用ios::sync_with_stdio(false)关闭同步,调用cin.tie(0)解除绑定,在竞赛等场景能减少时间消耗。
python
屏幕
录制与回放_
使用
Python来做一个
屏幕
录制工具的操作代码
本文介绍了一个
使用
Python开发的
屏幕
录制工具,包括GUI界面设计、
多线程
处理、
屏幕
区域选择、键盘模拟操作及视频录制等功能。
C++ 语言
65,211
社区成员
250,515
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章