[Return to Bookshelf] [Contents] [Previous Section] [Next Section] [Index] [Help]


pthread_cancel

Allows a thread to request that it or another thread terminate execution.

Syntax

pthread_cancel(
               thread );
 


Argument Data Type Access

thread opaque pthread_t read


C Binding

int
pthread_cancel (
pthread_t thread);

Arguments

thread
Thread that receives a cancel request.

Description

This routine sends a cancel to the specified thread. A cancel is a mechanism by which a calling thread informs the specified thread to terminate as quickly as possible. Issuing a cancel does not guarantee that the canceled thread will receive or handle the cancel. The canceled thread can delay processing the cancel after receiving it. For instance, if a cancel arrives during an important operation, the canceled thread can continue if what it is doing cannot be interrupted at the point where the cancel is requested.

Because of communication delays, the calling thread can only rely on the fact that a cancel will eventually become pending in the designated thread (provided that the thread does not terminate beforehand). Furthermore, the calling thread has no guarantee that a pending cancel will be delivered because delivery is controlled by the designated thread.

Termination processing when a cancel is delivered to a thread is similar to pthread_exit. Outstanding cleanup routines are executed in the context of the target thread, and a status of -1 is made available to any threads joining with the target thread.

This routine is preferred in implementing an Ada abort statement and any other language- or software-defined construct for requesting thread cancellation.

The results of this routine are unpredictable if the value specified in thread refers to a thread that does not currently exist.

Return Values

If an error condition occurs, this routine returns -1 and sets errno to the corresponding error value. Possible return values are as follows:
Return  Error         Description

0 Successful completion. -1 [EINVAL] The specified thread is invalid. -1 [ESRCH] thread does not specify an existing thread.



[Return to Bookshelf] [Contents] [Previous Section] [Next Section] [Index] [Help]