Пользователь
singleton->do_job() приводит к segmentation fault (указатель singleton не обязан был быть синхронизирован с потоком thread1)
std::unique_lock l(mtx); // `mutex` locks here (acquire memory)
Правильно ли я понимаю, что для того, чтобы указатель был синхронизирован с потоком thread1 необходимо вызвать
?
Как я понял именно в этот момент произойдет синхронизация памяти между потоками и указатель в thread2 станет валидным.