Могу ли я повторно использовать pthread_t и pthread_attr_t для нового отдельного потока уже выполненного потока последовательно? - PullRequest
1 голос
/ 19 апреля 2020

Я хочу выполнить 2 разных потока подряд, не используя pthread_join, это нормально? или мне действительно нужно объявить новый thread_t вроде этого:

pthread_create(&th,&thread_attr,shtdwn,(void*)&lpBuffer);
pthread_create(&th,&thread_attr,Run,(void*)&args);

А также мне не нужно ждать ни одной нити до конца sh. Спасибо за помощь!

1 Ответ

2 голосов
/ 19 апреля 2020

Переменные pthread_t и pthread_attr_t могут использоваться повторно для каждого вызова pthread_create. На самом деле, pthread_attr_t часто используется таким образом. Однако повторное использование переменной pthread_t немного более необычно, поскольку это значение обычно сохраняется для использования в последующих операциях pthread в потоке (таких как pthread_join).

Кроме того, pthread_attr_t может иметь значение NULL, в этом случае будут использоваться атрибуты по умолчанию. Однако аргумент pthread_t не должен быть NULL. Из руководства pthread_create :

Аргумент attr указывает на структуру pthread_attr_t, содержимое которой используется во время создания потока для определения атрибутов для нового потока; эта структура инициализируется с помощью pthread_attr_init (3) и связанных функций. Если attr равен NULL, то поток создается с атрибутами по умолчанию.

Перед возвратом, успешный вызов pthread_create () сохраняет идентификатор нового потока в буфере, указанном потоком;

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