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
#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 |