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 代码还包含打印语句。我的 Python 代码只调用 print,而不是sys.stdout.flush()
在每次打印之后调用。但是,在 Python 生成的打印语句之后程序执行挂起的情况很少见。我错过了什么明显的东西吗?我应该sys.stdout.flush()
在 Python 代码中调用吗?不幸的是,我无法提供更多代码,因为我的程序由几十个类组成。
[编辑] 当程序挂起时,我用调试器暂停了程序,并且没有可显示的源。调用堆栈是:
似乎有一个线程正在等待。但是,我自己并没有设置这些线程。它们要么由 Cuda 生成,要么由我也在使用的 Havok 物理引擎生成。我会调查的。