Boost logo

Boost Users :

Subject: Re: [Boost-users] at_thread_exit() never getting called
From: Peter Dimov (pdimov_at_[hidden])
Date: 2009-11-08 17:56:57


cowwoc wrote:
> Peter Dimov-5 wrote:
>>
>> cowwoc wrote:
>>> One of my threads has the following logic:
>>>
>>> {
>>> at_thread_exit(myHook);
>>> while (!shutdownRequested)
>>> {
>>> // do stuff
>>> }
>>> }
>>>
>>> myHook()
>>> {
>>> shutdownRequested = true;
>>> }
>>>
>>> Following your scenario, doesn't this mean that the shutdown
>>> hook will never get executed? What will happen? Will exit() hang
>>> forever?
>>
>> It will never get executed. The hook is executed AFTER the thread
>> exits.
>>
>
> So how do you propose I implement the use-case I mentioned?

This way:

void threadproc()
{
    while( !shutdownRequested ) { ... }
}

void signal_thread_to_exit_and_wait()
{
    shutdownRequested = true;
    // join thread
}

int main()
{
    // start thread
    atexit( signal_thread_to_exit_and_wait );
    // ...
} // exit( 0 ) happens here


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net