- 主题:CPU指令乱序执行的好处是啥?
如果多线程共享全局变量之类的场景,指令乱序执行怎么确保运行正确呢?
--
FROM 36.112.69.*
那是码农该管的事,不是cpu的职责
--
FROM 221.218.212.*
说的是CPU指令乱序执行,不是程序和编译的事
【 在 stub 的大作中提到: 】
: 那是码农该管的事,不是cpu的职责
--
FROM 36.112.69.*
充分利用流水线
编译器需要正确插入barrier
【 在 wjhtingerx (ca6140) 的大作中提到: 】
: 如果多线程共享全局变量之类的场景,指令乱序执行怎么确保运行正确呢?
: --
:
:
--
FROM 167.220.255.*
编译器不知道线程共享变量之类的场景啊
【 在 vabc3 的大作中提到: 】
: 充分利用流水线
: 编译器需要正确插入barrier
:
--
FROM 223.104.39.*
基础/工具库负责维护共享变量的线程安全
具体实现就是在编译时插入各种控制指令
如果你默认不作任何处理,那自然也就没有线程安全可言
【 在 wjhtingerx 的大作中提到: 】
: 编译器不知道线程共享变量之类的场景啊
--
FROM 116.233.89.*
【 在 wjhtingerx 的大作中提到: 】
: 如果多线程共享全局变量之类的场景,指令乱序执行怎么确保运行正确呢?
这个时候资深码农的作用就显现出来了。
你得知道什么时候需要barrier...
--
FROM 111.197.112.*
CPU确保乱序执行对单线程不改变语义
多线程情况提供各种barrier给开发者使用
开发者负责根据自己的需求准确使用这些指令达到所需效果
【 在 wjhtingerx 的大作中提到: 】
: 如果多线程共享全局变量之类的场景,指令乱序执行怎么确保运行正确呢?
--
FROM 125.77.89.*
【 在 wjhtingerx 的大作中提到: 】
: 如果多线程共享全局变量之类的场景,指令乱序执行怎么确保运行正确呢?
好处就是让执行单元别闲着傻等, 先动手做了,回头不需要的结果丢掉也行
--
FROM 117.35.158.*
以前看linux内核,对barirree很是迷惑,后来才知道,我就不应该去看那本书,
--
FROM 180.143.19.*