On Mon, 6 Mar 2006 08:01:54 +0100
Melchior FRANZ <[EMAIL PROTECTED]> wrote:

> > In the FGMetarEnvironmentCtrl destructor, thread->cancel() causes the
> > following thread->join() call to return without actually waiting on
> > the thread (btw, thread->cancel() does not cause the thread to exit).
> 
> It causes the thread to to be left at the next cancellation point,
> that would be the wait() in the SGBlockingQueue::pop. So the guarded
> mutex should automatically be unlocked and the thread left. That's
> according to the documentation and works here.

My initial assumption is wrong. Here's another one: pthread_cancel()
does cause the thread to exit, but the C++ destructors are not
invoked. The SGGuard destructor can therefore not unlock the mutex.

-- 
Jean-Yves Lefort

[EMAIL PROTECTED]
http://lefort.be.eu.org/

Attachment: pgpBI1B734S1V.pgp
Description: PGP signature

Reply via email to