мы должны явно присоединиться к потоку, чтобы закончить - PullRequest
2 голосов
/ 05 июля 2011

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

1 Ответ

3 голосов
/ 05 июля 2011

Не обязательно; вы всегда можете отсоединить поток, если не хотите явно его ждать.

Есть несколько вещей, которые следует учитывать:

  • Если вы не присоединитесь к неотсоединенному потоку, он станет потоком зомби (да, есть такие вещи)
  • Если вы не присоединитесь к потоку, ваш основной поток может закончиться до того, как закончится дочерний процесс
  • После того, как вы отсоедините нить, нет возможности снова прикрепить ее

Как вы отсоединяете нить? Есть два способа:

detachstate = 1;
rc = pthread_attr_setdetachstate(&attr, detachstate);
if (rc) {
    handle error;
}

pthread_create(&thr, &attr, th_fun, NULL);

И второй способ

void *th_fun(void *arg)
{
    pthread_detach(pthread_self());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...