C言語のマルチスレッドの作成方法は?
pthreadライブラリを使用してC言語でスレッドを作成できます。以下に、pthreadライブラリでスレッドを作成する方法を示します。
- ヘッダファイルのインクルード: まずは< pthread.h >ヘッダファイルをインクルードする必要があります。
- スレッド関数宣言: 関数をスレッドのエントリ関数として定義します。この関数は以下の形式を持つ必要があります。void* function_name(void* arg)。関数パラメータは任意の型のポインタまたは NULL にすることができます。
- スレッドを作成する: pthread_create()関数を用いてスレッドを作成します。この関数の原型はint pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg)です。threadはpthread_t型を指し、スレッドのIDを保存します。attrはpthread_attr_t型を指し、スレッドの属性を指定します。通常はNULLです。start_routineはスレッド関数を指します。argはスレッド関数に渡される引数です。
- スレッド終了の待機:スレッドが終了して戻り値を取得するまで待つ必要がある場合は、pthread_join() 関数を使用できます。この関数のプロトタイプは int pthread_join(pthread_t thread, void **value_ptr) です。ここで、thread は待機するスレッド ID、value_ptr はポインタを指すポインタで、スレッドの戻り値を格納するために使用されます。スレッドが終了するまで待機する必要がない場合は、この関数を使用する必要はありません。
- スレッド終了: スレッドが完了したら、pthread_exit() 関数でスレッドを終了できます。この関数のプロトタイプは void pthread_exit(void *retval) です。ここで、retval は任意の型へのポインタであり、スレッドの戻り値を指定するために使用されます。
pthreadライブラリを使用する際は、pthreadライブラリとのリンクが必要です。コンパイル時に-pthreadオプションを追加できます。例:gcc -pthread program.c -o program