A question about thread cancellation

Phil Frisbie, Jr. phil@hawksoft.com
Thu Sep 29 17:10:00 GMT 2005


Fu Limin wrote:

> Hello,
> 
> I have a question on thread cancellation, which is not specifically
> relevant to pthread-win32, I hope you will not mind if I post it in this
> mailling list.
> 
> In my program, there is a global mutex and a condition variable. And there
> are several threads wait on this cond.var. under the protection of this
> mutex. When I cancel one of the threads, I found there is a trouble in the
> thread clean up. Because the mutex can be in either locked or unlocked
> state. And if it is in locked state, I can't tell if it is locked by
> another thread, or it gets the locked state from the cancellation point
> pthread_cond_wait()! If it is locked by another thread, I should do
> nothing on it, but if it gets the locked state by returning from
> pthread_cond_wait() due to cancellation, I should unlock it in the clean
> up.
> 
> So the problem is, how can I know, in the clean up, when should I unlock
> the mutex, and when not? Did any body have experienced similar problem?
> Does anybody have any hints on this?

In my opinion it is EVIL (or at least bad programming) to cancel threads. It is 
better to architect your code so that you can request a thread to exit on it's own.

-- 
Phil Frisbie, Jr.
Hawk Software
http://www.hawksoft.com



More information about the Pthreads-win32 mailing list