Будет ли поток перезапущен снова, если он снова встретит оператор thread_create? - PullRequest
0 голосов
/ 21 февраля 2019

Я использую pthreads и сомневаюсь, что поток будет перезапущен снова, если он встретится с тем же оператором create, который его создал?

1 Ответ

0 голосов
/ 21 февраля 2019

Будет ли поток снова перезапущен, если снова встретится с оператором thread_create?

Он создаст новый поток независимо от того, был ли он вызван потоком, который сам был создан с помощью pthread_create.

Допустим, у меня есть тема t1.Что произойдет, если встретится с оператором create, pthread_create (& t1, NULL, func, NULL).Как создать новый поток, если у меня есть уникальный идентификатор потока, скажем, имя t1?

В этом случае вы все еще создаете новый поток, но просто повторно используете / перезаписываете предыдущий идентификатор потока t1.Это означает, что вы можете вызывать pthread_join только во второй созданный вами момент, но теряете способность pthread_join, изменять атрибуты первого потока и т. Д. В первом потоке.Обратите внимание, что это все еще действует.Но если это ваш вариант использования, вам, вероятно, лучше создать отсоединенные потоки (либо установив атрибут перед созданием первого потока, либо вызвав pthread_detach из функции потока).Отсоединенный поток не может быть присоединен и чьи ресурсы освобождаются при выходе из потока (т. Е. Либо путем вызова pthread_exit, либо путем возврата из функции потока).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...