マルチスレッドのプログラミング

取り消しタイプの設定

取り消しタイプを遅延モードまたは非同期モードに設定するには、pthread_setcanceltype(3C) を使用します。

pthread_setcanceltype の構文

int pthread_setcanceltype(int type, int *oldtype);
#include <pthread.h>

int oldtype;
int ret;

/* deferred mode */
ret = pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);

/* async mode*/
ret = pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype);

スレッドが生成されると、デフォルトでは取り消しタイプが遅延モードに設定されます。遅延モードにあるスレッドは、取り消しポイント以外では取り消すことができません。非同期モードにあるスレッドは、実行中の任意のポイントで取り消すことができます。非同期モードを使用するのは好ましくありません。

pthread_setcanceltype の戻り値

pthread_setcanceltype() は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、次の値を返します。


EINVAL

説明:

PTHREAD_CANCEL_DEFERRED または PTHREAD_CANCEL_ASYNCHRONOUS タイプではありません。