Я читал разные вещи при многопоточности, С++, правильной синхронизации и блокировках, чтобы предотвратить условия гонки. Однако мне не ответил один вопрос: Требуется ли mutex, если я создаю объект в потоке A, но использую его исключительно в потоке B после?
Другими словами, я знаю, что мне не нужен мьютекс для предотвращения условий гонки - мне нужен мьютекс, чтобы служить барьером памяти (или другими потенциальными проблемами)?
Самый простой пример для визуализации того, что я имею в виду
struct Object {
void do_stuff();
};
Object o;
std::thread worker_thread([&o](){
while (alive)
o.do_stuff();
}).join();
// `o` is never used outside worker_thread
Я был бы рад, если бы вы могли также порекомендовать мне статьи/книги, где я могу больше читать эту тему и/или правильные ключевые слова для поиска этих сценариев.