PTHREAD_CREATE(3) | FreeBSD Library Functions Manual | PTHREAD_CREATE(3) |
名称
pthread_create — 新しいスレッドを作成するライブラリ
POSIX Threads Library (libpthread, -lpthread)書式
#include < pthread.h> int
pthread_create( pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
解説
pthread_create() 関数は、プロセス内で attr によって指定された属性で新しいスレッドを作成するために使用されます。 attr が NULL であるなら、デフォルトの属性が使用されます。 attr によって指定された属性が後で修正されても、スレッドの属性は、影響されません。成功して完了すると、 pthread_create() は、 thread によって指定された場所に作成されたスレッドの ID を格納します。スレッドは、唯一の引数として arg を付けて start_routine を実行して作成されます。 start_routine が返るなら、効果は、あたかも終了ステータスのように start_routine の返り値を使用する pthread_exit() への暗黙の呼び出しがあったかのようになります。 main() が最初に呼び出されたスレッドは、これと異なることに注意してください。 main() から返るとき、効果は、あたかも終了ステータスのように main() の返り値を使用する exit() への暗黙の呼び出しがあったかのようになります。
新しいスレッドのシグナル状態は、次のように初期化されます:
- シグナルマスクは、作成するスレッドから継承されます。
- 新しいスレッドのための保留中 (pending) のシグナルのセットは、空です。
戻り値
成功したなら、 pthread_create() 関数は、0 を返します。そうでなければ、エラー番号がエラーを示すために返されます。エラー
pthread_create() 関数は、次の場合に失敗します:- [ EAGAIN]
- システムに別のスレッドを作成するために必要なリソースが足りないか、またはシステムで強制されているプロセスのスレッドの合計の数の制限 [PTHREAD_THREADS_MAX] が超過しました。
- [ EPERM]
- 呼び出し側には、必要なスケジューリングパラメータまたはスケジューリングポリシを設定するための適切なパーミッションがありません。
- [ EINVAL]
- attr によって指定された値が無効です。
関連項目
fork(2), pthread_attr(3), pthread_cleanup_pop(3), pthread_cleanup_push(3), pthread_exit(3), pthread_join(3)規格
pthread_create() 関数は、 ISO/IEC 9945-1:1996 (“POSIX.1”) に適合しています。November 4, 2006 | FreeBSD |