Поток, который был ранее присоединен или отсоединен, снова присоединен или отсоединен
Этот дефект возникает в следующих случаях:
Попытка соединения потока, который был ранее присоединен или отсоединен.
Попытка отсоединить поток, который был ранее присоединен или отсоединен.
Панель Сведения о результате (Result Details) описывает, был ли поток ранее присоединен или отсоединен, а также показывает предыдущие связанные события.
Например, поток, соединенный с thrd_join затем отсоединяется с помощью thrd_detach:
thrd_t id; ... thrd_join(id, NULL); thrd_detach(id);
Обратите внимание, что поток считается соединенным только в том случае, если предыдущее соединение потоков выполнено успешно. Например, поток не считается соединенным в if ветвь здесь:
thrd_t t;
...
if (thrd_success != thrd_join(t, 0)) {
/* Thread not considered joined */
}thrd_current() функция.Стандарт C11 (пункты 7.26.5.3 и 7.26.5.6) гласит, что резьба не должна соединяться или отсоединяться после того, как она была ранее присоединена или отсоединена. Нарушение этих положений стандарта приводит к неопределенному поведению.
Избегайте присоединения потока, который уже был присоединен или отсоединен ранее. Избегайте отсоединения потока, который уже был присоединен или отсоединен.
| Группа: Параллелизм |
| Язык: C |
| По умолчанию: Откл. |
Синтаксис командной строки:
DOUBLE_JOIN_OR_DETACH |
| Воздействие: среднее |