- 主题:CPU指令乱序执行的好处是啥?
CPU确保乱序执行对单线程不改变语义
多线程情况提供各种barrier给开发者使用
开发者负责根据自己的需求准确使用这些指令达到所需效果
【 在 wjhtingerx 的大作中提到: 】
: 如果多线程共享全局变量之类的场景,指令乱序执行怎么确保运行正确呢?
--
FROM 125.77.89.*
因为编译器/库里有 barrier 指令啊
【 在 wjhtingerx 的大作中提到: 】
: 比如,arm Linux应用编程,barrier的api一般是啥?
: 比较奇怪的是,应用开发大量线程共享变量的情况,我很少看到有人设barrier,但好像也没啥大的问题,这是为啥呢?
--
FROM 220.200.24.*
不一定基于线程共享变量
比如 java 从语言层面定义了 volatile 有 happen-before 的语义
那么在实际编译执行 volatile 变量读写语句的时候
编译器/jvm就会负责插 barrier 指令以使代码行为符合语言标准
【 在 wjhtingerx 的大作中提到: 】
: 你的意思编译器会明白线程共享变量场景,然后自动加上barrier指令,不能吧?
--
FROM 220.200.24.*