标签:
来自https://www.zhihu.com/question/31459750
答主解释说:不能指望volatile能解决多线程竞争问题,除非所用的环境系统不可靠才会为了保险加上volatile,
或者从极限效率考虑来实现很底层的接口,这要求编写者对逻辑走向很清楚,不然会出错。
c++11标准明确指出解决多线程的数据竞争问题应该使用原子操作或互斥锁。
c和c++中的volatile并不是用来解决多线竞争问题的,而是用来修饰一些程序不可控因素导致变化的变量,比如访问底层硬件设备的变量,来提醒编译器不要对该变量的访问擅自进行优化。
标签:
原文地址:http://www.cnblogs.com/li-daphne/p/5583912.html