社区
C++ 语言
帖子详情
为什么多线程下使用cout输出不能在屏幕见到?
yunzhongjian
2004-12-31 11:21:00
在多线程的环境下,如果多个线程输出,使用std的cout输出字符到屏幕时,有时输出根本不会出现在屏幕上,但程序的确执行过cout输出语句了。改使用printf就没有问题了。 为什么std的cout会这样呢?请大家赐教!
...全文
1111
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
黑客帝国的数字雨--絕笹の負卿
2. **控制台
输出
**:在C++中,
使用
`std::
cout
`对象可以向标准
输出
(通常是控制台)打印字符。通过循环和延时,可以连续
输出
形成动态效果。 3. **随机数生成**:为了模拟数字雨随机下落的效果,需要
使用
C++的随机数...
C++绘制爱心
在C++中,可以
使用
`std::
cout
`来
输出
字符,`std::cin`来获取用户输入,而`system("cls")`可以清屏。 爱心通常由两个或三个连在一起的心形组成,每个心形可以用两个对称的曲线来表示。在ASCII艺术中,可以
使用
不同的...
课程设计-基于C++的火车票管理系统 控制台源码.zip
虽然C++标准库并不直接支持
多线程
,但可以通过第三方库如pthreads或C++11引入的std::thread实现。在源码中,可能会看到线程同步机制,如互斥锁(mutex),以确保在并发环境下数据的一致性。 总结来说,这个基于C++...
C++程序设计:基于c++编写的图书管理系统项目源码已录几万条图书信息.zip
10. **
多线程
**:如果系统支持并发操作,如多个用户同时查询图书,那么可能采用了
多线程
技术,如`std::thread`。 11. **设计模式**:为了解决特定问题,开发人员可能运用了设计模式,如工厂模式(用于创建对象)、...
C++贪吃蛇控制台
需要注意的是,由于控制台输入是阻塞的,所以通常需要
使用
多线程
或者定时器来处理游戏循环,以避免用户在输入期间游戏暂停。 4. **游戏循环**:游戏的核心是一个无限循环,不断检查当前游戏状态,如蛇是否吃到食物...
C++ 语言
65,208
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章