junlon2006 / linux-c

computer system & Linux
Apache License 2.0
1 stars 1 forks source link

memory barrier #173

Open junlon2006 opened 3 years ago

junlon2006 commented 3 years ago

由于编译器和处理器可以打乱程序的执行顺序,所以有些时候,我们需要“memory barrier”来保证内存访问指令的执行顺序(load和store指令): (1)rmb():提供一个读(load)操作的“memory barrier”,保证读操作不会跨越rmb()进行reorder。即rmb()之前的读(load)操作不会reorder rmb()之后,而rmb()之后的读(load)操作不会reorder rmb()之前。 (2)wmb():提供一个写(store)操作的“memory barrier”,同rmb类似,不过wmb()是保证写操作不会跨越wmb()进行reorder。 (3)mb():保证读写操作都不会跨越mb()进行reorder。 (4)read_barrier_depends():rmb()的一个变种,但仅保证有依赖关系的读操作不会跨越rmb()进行reorder。

junlon2006 commented 1 year ago

https://developer.aliyun.com/article/375819

junlon2006 commented 1 year ago

https://mp.weixin.qq.com/s/s6AvLiVVkoMX4dIGpqmXYA https://www.bilibili.com/video/BV1BV4y1W7U3/?spm_id_from=333.337.search-card.all.click&vd_source=1f5fba297dd3a110134f6d210b7e9bf0

junlon2006 commented 1 year ago

https://www.bilibili.com/video/BV16r4y1Y7P5/?spm_id_from=333.337.search-card.all.click&vd_source=1f5fba297dd3a110134f6d210b7e9bf0