Какая типичная ошибка при работе с std::thread и как ее избежать?

C/C++MiddleМногопоточность и конкурентностьОшибка кандидатамногопоточность и конкурентность|потоки|std::thread|c++|c

Что хотят услышать интервьюеры:

Частая ошибка: думать, что mutex решает все, игнорировать data races, memory ordering, spurious wakeups и lifetime потоков.

Ответ:

Как избежать: явно определить контракт: кто владеет объектом, кто освобождает ресурс, что происходит при ошибке, какие инварианты должны сохраняться.

На собеседовании: полезно назвать симптом — segfault, leak, UB, data race, deadlock, ABI break или деградация производительности.

std::thread t([]{
  work();
}
);
t.join();

Источники

Похожие вопросы