スレッドの作成

スレッドの作成

スレッドを作成するときにメソッドpthread_exit(NULL)でメソッドを使用するのはなぜですか?main()

#include <stdio.h>
#include <unistd.h>
#include <pthread.h>

void *message(void *arg){
    char *myMessage = (char*)arg;
    printf("%s\n", myMessage);
}

int main(void){

   pthread_t arr[2];
   char *messages[2] = {"Hello", " World"};

   if( pthread_create(&arr[0], NULL, message, &messages[0]) != 0 ){
       printf("Creating thread failed");
   }

   if( pthread_create(&arr[1], NULL, message, &messages[1]) != 0 ){
       printf("Creating thread failed");
   }

   pthread_exit(NULL); -> WHY
}

ベストアンサー1

この内容は次のように記録されます。このpthread_exit(3)ヘルプページ:

他のスレッドが引き続き実行されるようにするには、基本スレッドがpthread_exit()次を呼び出す必要があります。exit(3)

デフォルトでは、スレッドを起動すると、現在実行中の「コンテキスト」もスレッドです。新しいスレッドの寿命はメインスレッドに接続されない可能性があるため、main関数を終了する必要があります。pthread_exit()それ以外の場合、呼び出しは終了しexit()(から返された後に発生しますmain)、これはすべてのプロセススレッドを停止します。

最後に、main他のスレッドの戻り値を提供することには注意を払わないので、のNULL引数を使用しますpthread_exit()

おすすめ記事