KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Latelly I've been working with multi-thread coding, after a while writing I realized that if I used std::cout in different boost::threads, the output would came without a logical order, the program that I'm testing is something like: #include <boost/thread/thread.hpp> #include <iostream> int my01( void ) { std::cout << "my01" << std::endl; return 0; } /* my02, my03 and my04 are the same with different outputs*/ [...] int main( void ) { boost::thread t1(&my01); boost::thread t2(&my02); boost::thread t3(&my03); boost::thread t4(&my04); while(!t1.joinable() || !t2.joinable() || !t3.joinable() || !t4.joinable()); t1.join(); t2.join(); t3.join(); t4.join(); std::cout << "The end!" << std::endl; getchar(); return 0; } And the output is usually like (it changes): my02my01 my04 my03 BLANK LINE The end! With this issue in mind I was thinking of creating a single thread to manage all of the outputs, so they would be in order like: my01 my02 my03 my04 The end! Which is the optimal way to write such thread or to manage those outputs? Please read the answers to this question too: Is cout synchronized/thread-safe? Ps:I'm using Visual C++ 2010 Express and my cpu has 8 different cores. Thank you for your time!
Tags (comma-separated)
Save Edits
Cancel