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