C言語でスレッドの戻り値を取得する方法
C言語では、pthread_join関数を用いることで、スレッドからの戻り値を取得できます。pthread_join関数のプロトタイプを以下に記載します。
int pthread_join(pthread_t thread, void **retval);
pthread_join関数は、指定されたスレッドが終了するまで呼び出し側スレッドをブロックします。指定されたスレッドが終了すると、その戻り値が、retvalポインタが指す場所に格納されます。
pthread_join 関数を使ってスレッドの返り値を取得する例を以下に示します。
#include <stdio.h>
#include <pthread.h>
void *thread_function(void *arg) {
int *value = (int *)arg;
*value = 10;
return NULL;
}
int main() {
pthread_t thread_id;
int thread_arg = 0;
pthread_create(&thread_id, NULL, thread_function, &thread_arg);
pthread_join(thread_id, NULL);
printf("Thread return value: %d\n", thread_arg);
return 0;
}
上の例では、thread_function 関数は thread_arg の値を 10 に設定し、NULL を返してスレッドを終了します。main 関数では、スレッドを作成して、スレッドが終了するまで待ちます。その後スレッドの戻り値を表示します。この例では、スレッドの戻り値は 10 です。