当前位置:  开发笔记 > 编程语言 > 正文

C++输出流未使用endl和执行暂停进行刷新

如何解决《C++输出流未使用endl和执行暂停进行刷新》经验,为你挑选了0个好方法。

我有一个包含几个cout语句的C++程序.我确保所有这些都以一个结尾endl.我的问题是程序很少停止,直到用户按下Enter(所以我假设输出缓冲区并不总是按照它应该刷新).按Enter键恢复程序执行.这是非常有问题的,因为我的程序需要几个小时才能执行,因此我无法一直按下输入!请注意,有时程序会在一分钟后停止,有时会在一个多小时后停止.

这是一个小代码片段:

for(int i = 0; i < _numIterations; i++){

    std::cout << "Iteration " << i << std::endl;

    // Computations and more print statements.
}

请注意,我通过嵌入Python使用Theano,我的Python代码也包含print语句.我的Python代码只调用print,而不是sys.stdout.flush()每次打印后.但是,在Python生成的print语句之后,程序执行很少挂起.我错过了一些明显的事吗?我应该sys.stdout.flush()在Python代码中调用吗?不幸的是,我无法提供更多代码,因为我的程序包含数十个类.

[编辑]我挂了一个调试器时暂停了程序,没有可用的源显示.调用堆栈是: 在此输入图像描述

似乎线程正在等待.但是,我自己没有设置这些线程.它们要么是由Cuda生成的,要么是我正在使用的Havok物理引擎.我会调查.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有