Я споткнулся об этой теме: Почему volatile не считается полезным в многопоточном программировании на C или C ++?
и наткнулся на следующее в топе проголосовавшего ответа ...
Тем не менее, барьеры памяти также гарантируют, что все ожидающие чтения / записи выполняются, когда барьер достигнут, поэтому он фактически дает нам все, что нам нужно, сам по себе, что делает энергозатраты ненужными. Мы можем просто полностью удалить изменчивый классификатор.
Начиная с C ++ 11, атомарные переменные (std :: atomic) дают нам все соответствующие гарантии.
Я работаю на платформе, поддерживающей C ++ 98, так какой барьер памяти был доступен для C ++ 98? Я пытался использовать мьютекс для mbed, но я не могу логически определить, является ли мьютекс достаточным способом защиты, например, последовательной записи и чтения, происходящих в двух одновременных потоках, поскольку у меня недостаточно уверенности в отношении безопасности потоков.
Какой простой способ получить доступ к простому общему ресурсу в c ++ 98?