0

最後の 2 つのコード行の間で何が起こっているか教えてください。

// Creating Server and Client threads
pthread_create(&serverThread, NULL, (void* (*)(void*))&Server,(void *)0);

pthread_create(&clientThread, NULL, (void* (*)(void*))&Client,(void *)1);

// Wait until serverThread exits
pthread_join( serverThread, NULL);

// Wait until clientThread exits
pthread_join( clientThread, NULL);

同時に待ちたい。2 つのスレッドのいずれかが終了/終了した場合はどうなりますか? サーバーが無限ループで実行され続けたらどうなるでしょうか?

4

1 に答える 1

1

最初の参加 - serverThreadpthread_join(serverThread, NULL);が終了するまで待機します。

この間に clientThreadが終了する場合と終了しない場合があります。終了すると、呼び出されるまでゾンビ状態のままにpthread_join(clientThread, NULL);なります。pthread_joinこの場合、すぐに戻ります。

が呼び出されたときにclientThreadがまだ実行を終了していない場合は、終了pthread_join(clientThread, NULL);するまで再び待機しclientThreadます。

于 2015-01-11T09:27:11.773 に答える