
Thorsten Froehlich wrote:
Why don't you post an example that shows the behaviour you're reporting?
As others have already understood the problem, there does not seem to be a need to do so.
something like: #include <boost/thread/thread.hpp> #include <iostream> using namespace std; using namespace boost; void foo(void) { // So it doesn't really matter what goes on here but // something causes the routine to exit... int i = 10000; while (true) { // in my case this 'signal' is a special terminate job // as we all know thread cancelation is 'hard' if (--i == 0) break; } // Once we leave here we have no idea when the join call will occur } int main(int argc, char** argv) { thread fooThread(&foo); // Now do something to cause a delay here... // ignore the fact that input/output may not be 'thread safe' as this is not the point!! std::cout << "press the 'any' key..." << std:endl; char dummy; std::cin >> dummy; // assert may fail during join as the foo thread may have exited, but how do we know this? fooThread.join(); return 0; } So I could have made the thread detatched, but then consider the case when using thread_group, you've got multiple threads doing work and you want them to stop for some reason, how do you do that safely? My atificial delays above actually occur in operating systems Kevin -- | Kevin Wheatley, Cinesite (Europe) Ltd | Nobody thinks this | | Senior Technology | My employer for certain | | And Network Systems Architect | Not even myself |