|
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