Распараллельте ID от не пройдено создания потока, используемого в последующих функциях потока
Этот дефект происходит, когда создание потока функционирует, такие как pthread_create сбои, но вы продолжаете использовать ID от создания потока.
Например, pthread_join использует неопределенный ID потока после того, как создание предыдущего сообщения перестало работать. Ненулевое возвращаемое значение от pthread_create указывает на не пройдено создание потока.
pthread_t id;
if(0! = pthread_create(&id, attr, start_func, NULL)) {
...
phread_join(id, NULL);
...
}pthread_create.Согласно стандарту POSIX®, если создание потока перестало работать, содержимое ID потока не определено. Использование неопределенного ID потока может привести к непредсказуемым результатам.
Проблема часто указывает на программную ошибку. Например, возможно, что вы протестировали на ненулевые значения, чтобы определить успешное создание потока:
if(0 != pthread_create(&id, attr, start_func, NULL))
if(0 == pthread_create(&id, attr, start_func, NULL))
Если использование неопределенного ID потока прибывает из программной ошибки, зафиксируйте ошибку. В противном случае удалите функции потока, которые используют неопределенный ID.
| Группа: параллелизм |
| Язык: C |
| Значение по умолчанию: Off |
Синтаксис командной строки:
UNDEFINED_THREAD_ID |
| Удар: Средняя |
Join or detach of a joined or detached thread | Missing or double initialization of thread attribute