From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ross Johnson To: Rajiv K Shukla Cc: pthreads-win32@sourceware.cygnus.com Subject: Re: Asynchronous cancel Date: Thu, 12 Aug 1999 04:34:00 -0000 Message-id: References: <199908101804.EAA24054@ise.canberra.edu.au> X-SW-Source: 1999/msg00057.html On Tue, 10 Aug 1999, Rajiv K Shukla wrote: > Hello All, > > Sorry if the question has been asked before. We're trying to see if we > could use the pthreads-win32 package to port our code to NT. It's been > fine so far but we have hit a snag. It seems that > pthread_setcanceltype doesn't really do anything. It sets an integer > variable cancelType (which is part of the pthread_t structure) but the > flag is used no where. Looks like the only way to cancel a thread is > to call pthread_cancel and within the cancelled thread call > pthread_testcancel. But we'd like to be able to cancel a thread > asynchronously, e.g one of our thread sleeps for a configurable amount > of time and it could be set pretty high, 1 hour, or 10 hours, or > whatever. If within the thread I need to call pthread_testcancel in > order to be cancelled then it's a problem. We'd have to wait that much > time before we're even able to call pthread_testcancel. > > I'd appreciate any suggestion that you may have. > At present there is no way in general to asynchronously cancel a thread. The best device on offer in the package is the pthreadCancelableWait() and pthreadCancelableTimedWait() functions (both non-POSIX and non-portable). See the code and comments in misc.c. They respond to pthread_cancel(). Cheers. Ross +----------------------+---+ | Ross Johnson | | E-Mail: rpj@ise.canberra.edu.au | Info Sciences and Eng|___| | University of Canberra | FAX: +61 6 2015227 | PO Box 1 | | Belconnen ACT 2616 | WWW: http://willow.canberra.edu.au/~rpj/ | AUSTRALIA | +--------------------------+