我被这条线绊倒了:Why is volatile not considered useful in multithreaded C or C++ programming?
在上面的投票中偶然发现了下面的答案..。
然而,内存屏障也确保在达到障碍时执行所有挂起的读/写,因此它有效地为我们自己提供了我们所需要的一切,使易失性变得不必要。我们可以完全删除易失性限定符。 自C++11以来,原子变量(std::原子)为我们提供了所有相关的保证。
我正在C++98平台上工作,那么C++98有哪些内存屏障可用呢?我试着用互斥对象来搜索,但是逻辑上我无法确定互斥是否是保护的足够的方法,例如,串行写入和读取都发生在两个同时的线程中,因为我对线程安全性没有足够的信心。
在c++98中访问简单共享资源的简单方法是什么?
发布于 2019-06-10 11:14:02
C++98标准是单线程的(线程不存在),因此在标准中没有线程。但是,您将有特定于OS/平台的内存屏障。
发布于 2019-06-11 00:47:47
但我无法从逻辑上判断互斥是否是保护的足够方法,例如,串行写入和读取都发生在两个同步线程中
如果互斥锁代码不能保证这一点,那么根据定义,它们就被破坏了。我们必须看到这段代码,以检查它是否正确完成。
https://stackoverflow.com/questions/56525269
复制相似问题