0

私は現在インターンをしており、C++ を使用してマルチ クライアント サーバー クライアント アプリケーションを作成するよう求められています。したがって、私はスレッド化を学ぼうとしています。質問が 1 つあります。

「あなたはスレッド A にいます」、「あなたはスレッド B にいます」、「今、あなたは再びスレッド A にいます」と出力したいと思います。ただし、最初の 2 つの文のみが表示され、endl コマンドは無視されます。それがどのように機能するかを正確に理解することはできません。それを修正する方法と、動作メカニズムを簡単に説明していただけますか?

すべての関数呼び出しが完了する前にメインスレッドが終了するのはなぜですか?

void  * function1(void * arg);
void  * function2(void * arg);


pthread_t thr_A, thr_B;
int main( void )
{

    pthread_create(&thr_A, NULL, function1, (void*)thr_B); 
    pthread_create(&thr_B, NULL, function2,NULL); 

return 0;

}

void * function1(void * arg)
{

  cout << "You are in thread A" << endl;
  pthread_join(thr_B, NULL);
  cout << "now you are again in thread A" << endl; 
  pthread_exit((void*)thr_A);


}

void * function2(void * arg)
{
    cout << " you are in thread B "  << endl ;
    pthread_exit((void*)thr_B);
}
4

1 に答える 1