Как ждать два потока?

Кто-нибудь, пожалуйста, скажите мне, что происходит между двумя последними строками кода

// 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);

Я хочу ждать их одновременно. Что если один из двух потоков завершается / завершается? Что если сервер продолжает работать в бесконечном цикле?

0

Решение

Первое присоединение — pthread_join(serverThread, NULL); будем ждать до serverThread завершается.

clientThread может или не может прекратить в течение этого времени; если он заканчивается, он остается в состоянии зомби до pthread_join(clientThread, NULL); вызывается. pthread_join вернется немедленно в этом случае.

Если clientThread еще не закончил выполнение, когда pthread_join(clientThread, NULL); называется, он будет ждать снова, пока clientThread завершается.

1

Другие решения


По вопросам рекламы [email protected]