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

スレッドのライフサイクル

スレッドが作成されると、現在のプロセスに新しい制御スレッドが追加されます。どのプロセスでも、プログラムの main() ルーチンに、少なくとも 1 つの制御スレッドが存在します。プロセス内の各スレッドは同時に実行され、呼び出しプロセスの大域データにアクセスできます。さらに、各スレッドには、独自のプライベート属性と呼び出しスタックも存在します。

新しいスレッドを作成するために、実行中のスレッドが pthread_create() 関数を呼び出し、新しいスレッドが実行する関数へのポインタを渡します。新しいスレッドの関数には、スレッド属性とともに 1 つの引数を渡すこともできます。スレッドの実行は、pthread_create() 関数からの正常な復帰で始まります。スレッドは、そのスレッドとともに呼び出された関数が正常に完了したときに終了します。

また、スレッドが pthread_exit() ルーチンを呼び出した場合や、ほかの任意のスレッドがそのスレッドを明示的に終了するための pthread_cancel() を呼び出した場合にもスレッドを終了できます。スレッドはまた、そのスレッドを呼び出したプロセスの終了によって終了する場合もあります。