Я новичок в многопоточности 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()?