Поток, который был ранее соединен или отсоединен, снова соединяется или отсоединяется
Этот дефект возникает, когда:
Вы пытаетесь присоединиться к потоку, который был ранее присоединен или отсоединен.
Вы пытаетесь отсоединить поток, который был ранее присоединен или отсоединен.
Панель 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 |
По умолчанию: Off |
Синтаксис командной строки
: DOUBLE_JOIN_OR_DETACH |
Влияние: Средний |