我是 Boost 线程的新手,我对如何从多个线程执行输出感到困惑。我有一个简单的 boost::thread 从 9 倒数到 1;主线程等待然后打印“LiftOff..!!”
#include <iostream>
#include <boost/thread.hpp>
using namespace std;
struct callable {
void operator() ();
};
void callable::operator() () {
int i = 10;
while(--i > 0) {
cout << "#" << i << ", ";
boost::this_thread::yield();
}
cout.flush();
}
int main() {
callable x;
boost::thread myThread(x);
myThread.join();
cout << "LiftOff..!!" << endl;
return 0;
}
问题是我必须在我的线程中使用明确的“cout.flush()”语句来显示输出。如果我不使用flush(),我只会得到“LiftOff!!” 作为输出。
有人可以告诉我为什么我需要明确使用 flush() 吗?