.\" Copyright (c) 1996 John Birrell . .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by John Birrell. .\" 4. Neither the name of the author nor the names of any co-contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .Dd April 4, 1996 .Dt PTHREAD_CREATE 3 .Os BSD 4 .Sh 名称 .Nm pthread_create .Nd 新しいスレッドの作成 .Sh 書式 .Fd #include .Ft int .Fn pthread_create "pthread_t *thread" "const pthread_attr_t *attr" "void *(*start_routine)(void *)" "void *arg" .Sh 解説 .Fn pthread_create 関数を使用すると、 .Fa attr で指定された属性でプロセスに新しいスレッドを作成できます。 .Fa attr が NULL である場合は、デフォルトの属性が使用されます。 .Fa attr で指定した属性を後で変更しても、スレッドの属性は変化しません。 問題なく終了すると、 .Fn pthread_create は、作成したスレッドの ID を .Fa thread で指定された場所に保存します。 .Pp スレッドは、 .Fa arg を唯一の引数として .Fa start_routine を実行して作成されます。 .Fa start_routine が復帰すると、 .Fa start_routine の戻り値を終了ステータスとして使用し、 .Fn pthread_exit を暗黙のうちに呼び出したような効果があります。 .Fn main を呼び出したスレッドは、これとは異なることに注意してください。 .Fn main から復帰すると、 .Fn main の戻り値を終了ステータスとして使用し、 .Fn exit を暗黙のうちに呼び出したような効果があります。 .Pp 新しいスレッドのシグナルは、以下の状態に初期化されます。 .Bl -bullet -offset indent .It シグナルマスクは、作成を行なうスレッドから継承されます。 .It 新しいスレッド用に保留しているシグナルのセットは空です。 .El .Sh 戻り値 問題がない場合、 .Fn pthread_create 関数は 0 を戻します。問題がある場合は、そのエラーを示すエラー番号を戻します。 .Sh エラー .Fn pthread_create は、以下のような場合にエラーとなります。 .Bl -tag -width Er .It Bq Er EAGAIN 別のスレッドの作成に必要なリソースがシステムに不足している場合、 または 1 つのプロセスの総スレッド数についてシステムに課された制限 [PTHREAD_THREADS_MAX] を越えた場合 .It Bq Er EINVAL .Fa attr で指定された値が正しくない場合 .El .Pp .Sh 関連項目 .Xr fork 2 , .Xr pthread_cleanup_pop 3 , .Xr pthread_cleanup_push 3 , .Xr pthread_exit 3 , .Xr pthread_join 3 .Sh 規格 .Fn pthread_create は、 ISO/IEC 9945-1 ANSI/IEEE .Pq Dq Tn POSIX Std 1003.1 Second Edition 1996-07-12 に準拠しています。