Кто-нибудь, пожалуйста, скажите мне, что происходит между двумя последними строками кода
// 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);
Я хочу ждать их одновременно. Что если один из двух потоков завершается / завершается? Что если сервер продолжает работать в бесконечном цикле?
Первое присоединение — pthread_join(serverThread, NULL);
будем ждать до serverThread завершается.
clientThread может или не может прекратить в течение этого времени; если он заканчивается, он остается в состоянии зомби до pthread_join(clientThread, NULL);
вызывается. pthread_join
вернется немедленно в этом случае.
Если clientThread еще не закончил выполнение, когда pthread_join(clientThread, NULL);
называется, он будет ждать снова, пока clientThread
завершается.