名称
pthread_setcancelstate(), pthread_setcanceltype() ― 現在のスレッドの取り消し可能状態や形式の設定と取得
構文
#include <pthread.h>
int pthread_setcancelstate(
int state,
int *oldstate
);
int pthread_setcanceltype(
int type,
int *oldtype
);
パラメータ
| state | | 呼び出しスレッドの取り消し可能状態の設定値。 |
| oldstate | | 呼び出しスレッドの以前の取り消し可能状態が返される領域へのポインター。 |
| type | | 呼び出しスレッドの取り消し可能形式の設定値。 |
| oldtype | | 呼び出しスレッドの以前の取り消し可能形式が返される領域へのポインター。 |
説明
pthread_setcancelstate() はアトミックに、呼び出しスレッドの取り消し可能状態を state に設定し、前回の取り消し可能状態を oldstate に返します。 state の有効な値は次のとおりです。
| PTHREAD_CANCEL_DISABLE |
| | | 呼び出しスレッドの取り消し可能性を無効にします。
呼び出しスレッドに対する取り消し要求は、保留されます。 |
| PTHREAD_CANCEL_ENABLE |
| | | 呼び出しスレッドの取り消し可能性を有効にします。
呼び出しスレッドに対する取り消し要求は、受け付けられます。 保留のキャンセル要求がいつ受け付けられるかは、スレッドの取り消し可能形式によって異なります。 |
デフォルトでは、スレッドの取り消し可能状態は、作成時に PTHREAD_CANCEL_ENABLE に設定されます。
pthread_setcanceltype() はアトミックに、呼び出しスレッドの取り消し可能形式を type に設定し、前回の取り消し可能形式を oldtype に返します。 type の有効な値は、次のとおりです。
| PTHREAD_CANCEL_ASYNCHRONOUS |
| | | 呼び出しスレッドへの新規または保留された取り消し要求は、いつでも受け付けることができます
(呼び出しスレッドで取り消しが有効になっている場合)。 |
| PTHREAD_CANCEL_DEFERRED |
| | | 呼び出しスレッドへの取り消し要求は、取り消し位置に達するまで保留されます。 |
スレッドの取り消し可能形式は、作成時に PTHREAD_CANCEL_DEFERRED に設定されます。
スレッドの取り消し可能状態が無効にされた場合、スレッドの取り消し可能形式の設定は、すぐには影響を及ぼしません。
取り消し要求はすべて保留のままです。 しかし、取り消し可能を再び使用可能にすれば、新しい取り消し可能形式が有効になります。
戻り値
正常終了すると pthread_setcancelstate() と pthread_setcanceltype() は 0 を返します。
それ以外の場合、エラーの内容を表すエラー番号を返します (errno 変数は使用しません)。
エラー
以下の条件の場合、 pthread_setcancelstate() と pthread_setcanceltype() 関数は、該当するエラー番号を返します。
| [EINVAL] | | state に無効な値が含まれている場合。 |
| [EINVAL] | | type に無効な値が含まれている場合。 |
注意
非同期に取り消しが可能なスレッドからは、非同期の取り消しに対して害のない関数のみ呼び出すようにする必要があります。
著者
pthread_setcancelstate() と pthread_setcanceltype() は、IEEE
POSIX P1003.1c 規格から派生しました。
標準準拠
pthread_setcancelstate(): POSIX 1003.1c.
pthread_setcanceltype(): POSIX 1003.1c.