PTHREAD_CREATE(3)

名称
pthread_create - 新しいスレッドの作成

ライブラリ
libc_r

書式
<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() を呼び出したような効果があります。

新しいスレッドのシグナルの状態は、以下のように初期化されます。

•   シグナルマスクは作成しているスレッドから継承されます。

•   新しいスレッド用に保留しているシグナルのセットは空です。

戻り値
問題がない場合は、 pthread_create() 関数は 0 を返します。 問題がある場合は、そのエラーを示すためにエラー番号が返されます。

エラー
pthread_create() は以下の場合に失敗します。

[EAGAIN]
    別のスレッドを作成するために必要なリソースがシステムに不足しています。 または、1 つのプロセス内の総スレッド数についてのシステムの 制限 [PTHREAD_THREADS_MAX] を超過しました。

[EINVAL]
    attr によって指定された値が、有効ではありません。

関連項目
fork(2), pthread_cleanup_pop(3), pthread_cleanup_push(3), pthread_exit(3), pthread_join(3)

規格
pthread_create() は p1003.1-96 に適合しています。