社区
C++ 语言
帖子详情
为什么多线程下使用cout输出不能在屏幕见到?
yunzhongjian
2004-12-31 11:21:00
在多线程的环境下,如果多个线程输出,使用std的cout输出字符到屏幕时,有时输出根本不会出现在屏幕上,但程序的确执行过cout输出语句了。改使用printf就没有问题了。 为什么std的cout会这样呢?请大家赐教!
...全文
816
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
NOIP信息学奥赛通关必备-第一个C++程序与
cout
输出
语句
NOIP信息学竞赛C++编程基础语法知识--第一个C++程序与
cout
输出
语句本课程是符合小学生认知特点的C++编程入门课,讲练结合,提升孩子解决NOIP竞赛试题的能力;课程案例均采用孩子生活中熟知常见的案例,讲解通俗易懂,让孩子可以学得懂,学得会;训练孩子的编程思维,提高处理解决编程问题的能力是NOIP信息学奥赛通关必备课
为什么我的std:
cout
影响运行速度?
**`std::
cout
` 默认是启用缓冲的,即它将
输出
存储在内部缓冲区,直到缓冲区满了才实际写入
输出
设备。4. **
使用
快速 I/O 函数:**在某些情况下,
使用
C语言的 I/O 函数(如 `printf` 和 `scanf`)可能比
使用
C++ 的 I/O 函数(如 `std::
cout
` 和 `std::cin`)更快。3. **将
输出
重定向到文件:**如果你只是需要保存
输出
结果,而不需要在
屏幕
上看到它们,那么可以考虑将 `std::
cout
` 的
输出
重定向到文件。这通常比打印到
屏幕
要快。
Windows下C++多
线
程编程(入门实例)
多
线
程在编程中有相当重要的地位,我们在实际开发时或者找工作面试时总能遇到多
线
程的问题,对多
线
程的理解程度从一个侧面反映了程序员的编程水平。 其实C++语言本身并没有提供多
线
程机制(当然目前C++ 11新特性中,已经可以
使用
std::thread来创建
线
程了,因为还没有系统地了解过,所以这里不提了。),但Windows系统为我们提供了相关API,我们可以
使用
他们来进行多
线
程编程。 创建
线
...
C++11多
线
程编程 一:多
线
程概述
一:多
线
程概述
Windows环境下多
线
程编程(C++)
多
线
程在编程中有相当重要的地位,我们在实际开发时或者找工作面试时总能遇到多
线
程的问题,对多
线
程的理解程度从一个侧面反映了程序员的编程水平。 其实C++语言本身并没有提供多
线
程机制(当然目前C++ 11新特性中,已经可以
使用
std::thread来创建
线
程了,因为还没有系统地了解过,所以这里不提了。),但Windows系统为我们提供了相关API,我们可以
使用
他们来进行多
线
程编程。 创建
线
程的API函数 HANDLE CreateThread( LPSECURITY_ATTRIBUT...
C++ 语言
64,691
社区成员
250,497
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章