Cancellation points

Ross Johnson rpj@ise.canberra.edu.au
Mon Dec 16 23:24:00 GMT 2002


Hi Simon,

Sleep() [with uppercase 'S'] is definitely not a cancelation point - 
only functions included with pthreads-win32 can be cancelation 
points. The POSIX function sleep() isn't provided by pthreads-win32 
either.

See the Conformance section of the ANNOUNCE file for all functions 
that have been implemented. Any of those that should be cancelation 
points are.

Re pthread_mutex_lock(), Thomas Pfaff discovered this bug only a few 
days ago and tracked it down (to an error of mine). I will fix it 
and drop it into CVS ASAP.

Thanks.
Ross

Simon Gerblich wrote:
> Hi,
> 
> I'm having some problems working out which functions are cancellation points
> when using
> pthread_cancel() with pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL).
> I'm using pthreadsVC.dll on Windows 2000.
> 
> Is Sleep() meant to be a cancellation point in WIN32?  I've read in the
> Solaris reference
> manual that sleep() and usleep() are cancellation points for pthreads on
> Solaris, but can
> not find a list of cancellation points for pthreads on WIN32.
> 
> Also pthread_mutex_lock() is acting as a cancellation point in my code.  I
> have to put
> pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL) before my
> calls to pthread_mutex_lock to stop it acting as a cancellation point.  If
> the thread
> cancellation occurs in a call to pthread_mutex_lock(), the mutex that was
> being locked
> returns EBUSY when destroyed with pthread_mutex_destroy().  Has anyone else
> seen this happen?  
> 
> Thanks for any help,
> Simon Gerblich




More information about the Pthreads-win32 mailing list