私は、1 つのスレッドが多くのシステム コール (読み取り、書き込みなど) を実行し、他のスレッドが printf などの通常の呼び出しを実行するマルチスレッド プログラムを作成しています。スレッド A が通常の呼び出し用で、スレッド B がシステム コール用であると仮定すると、私のメイン関数は次のようになります。
int main()
{
pthread_t thread_A;
pthread_t thread_B;
pthread_create(&thread_B,NULL,&system_call_func,NULL);
pthread_create(&thread_A,NULL,&printf_func,NULL);
pthread_join(thread_B,NULL);
pthread_join(thread_A,NULL);
printf("Last thread to be executed was %c\n",write_last);
return 0;
}
これにより、システムコールのあるスレッドは常に最後に実行されることがわかりました。スレッド作成・参加の順番を変えてもスレッドBのままです。 2点質問なのですが、スレッド作成・参加の順番は関係ありますか?スレッド B が常に最後に実行されるのは、システム コールのためですか?