2015-01-11 2 views
0

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

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

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

+1

, пожалуйста, сообщите нам, какая у вас ошибка. –

+0

Я не говорю об ошибке :) Мой вопрос: что происходит между двумя последними строками кода? – Moi

+1

Возможный дубликат [pthreads - Присоединитесь к группе потоков, дождитесь выхода из нее) (http://stackoverflow.com/questions/4577471/pthreads-join-on-group-of-threads-wait-for-one- to-exit) – user3553031

ответ

1

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^