Дублированная инициализация потока приписывает или неинициализированный атрибут потока, используемый в функциях, которые ожидают инициализированные атрибуты
Этот дефект происходит во время одной из этих ситуаций:
Вы инициализируете атрибут потока дважды функцией, такой как pthread_attr_init без промежуточного вызова функции, такой как pthread_attr_destroy.
Функциональный pthread_attr_destroy уничтожает объект атрибута потока и позволяет системе исправить ресурсы, сопоставленные с объектом.
Вы используете неинициализированный атрибут потока в функции, такой как pthread_create, который ожидает инициализированный атрибут. Атрибут потока может быть не инициализирован, потому что он никогда не инициализировался ранее или уничтожался с pthread_attr_destroy функция.
Неинициализированные атрибуты потока обнаруживаются для всех функций в стандарте POSIX®.
Панель Result Details описывает, инициализируется ли атрибут вдвойне или не инициализируется и также показывает предыдущие связанные события.
Обратите внимание на то, что атрибут потока рассматривается инициализированным только если вызов pthread_attr_init успешно. Например, атрибут потока не инициализируется в if перейдите здесь:
pthread_attr_t attr;
int thread_success;
thread_success = pthread_attr_init(&attr);
if(thread_success != 0) {
/* Thread attribute considered noninitialized */
}pthread_attr_init.Инициализация атрибута потока, не уничтожая ранее инициализированный атрибут или с помощью неинициализированных атрибутов потока приводит к неопределенному поведению.
Перед использованием атрибута потока инициализируйте атрибут при помощи pthread_attr_init функция.
pthread_attr_t attr;
int thread_success;
/* Initialize attribute */
thread_success = pthread_attr_init(&attr);
if(thread_success != 0) {
/* Handle initialization error */
}
...
/* Use attribute */
thread_sucess = pthread_create(&thr, &attr, &thread_start, NULL);pthread_attr_destroy прежде, чем инициализировать снова:pthread_attr_t attr;
int thread_success;
/* Destroy attribute */
thread_success = pthread_attr_destroy(&attr);
if(thread_success != 0) {
/* Handle destruction error */
}
...
/* Reinitialize attribute */
thread_success = pthread_attr_init(&attr);| Группа: параллелизм |
| Язык: C |
| Значение по умолчанию: Off |
Синтаксис командной строки:
BAD_THREAD_ATTRIBUTE |
| Удар: Средняя |