パスワードを忘れた? アカウント作成
451884 journal

Silphireの日記: pthread日記(1) - pthread_create() 2

日記 by Silphire

スレッドを作って、並列処理を開始します。

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);

スレッドを作成します。最初の引数threadにスレッド固有のIDが入ります。以降、スレッドに対して何か操作をする時には、このIDが必要になります。

次の引数のattrは、スレッドの属性を指定します。属性を使うと、スレッドの挙動をある程度変更する事が出来ます。それにはpthread_attr_というプリフィックスのついたAPIを使う事になりますが、ここではとりあげません。デフォルトのままで良い場合は、NULLを指定します。多くの場合はNULLで良いようです。

3番目の引数start_routineは、新しいスレッドが開始する関数を指定します。新しく起動したスレッドは、start_routine()から実行を開始します。ちなみに引数から明らかな通り、スレッドが実行を開始する関数のプロトタイプは

void start_routine(void *arg);

である必要があります。

最後の引数argは、スレッドに渡す引数を指定します。スレッドに渡せる引数はこれ1つのみです。複数の引数を与えたい場合は、配列なり構造体のポインタなりを使う事になります。

戻り値は、pthread_create()の実行に成功して新しいスレッドが実行を開始した時は0、それ以外の、エラーが発生した時にはエラーに対応した値が返されます。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

身近な人の偉大さは半減する -- あるアレゲ人

読み込み中...