最近学习了linux 的内存同步对于内存栅相关的内容,在这里整理一下以免以后右忘了。
Linux 内存栅有三种,读,写,数据读依赖栅。读栅用于保证在此处两边的load 内存操作不会穿过读栅,写栅用于保证此处两边的store内存操作不会穿过写栅,数据读依赖栅用于保证在栅之前的load操作不会穿过数据读依赖。
数据读依赖的发生场景比如下,在没有任何内存栅栏的时候,很有可能是b在pp设置为p之前设置为pp。read_barrier_depends提供了足够的栅栏,因为*pp是依赖于p的。
最近学习了linux 的内存同步对于内存栅相关的内容,在这里整理一下以免以后右忘了。
Linux 内存栅有三种,读,写,数据读依赖栅。读栅用于保证在此处两边的load 内存操作不会穿过读栅,写栅用于保证此处两边的store内存操作不会穿过写栅,数据读依赖栅用于保证在栅之前的load操作不会穿过数据读依赖。
数据读依赖的发生场景比如下,在没有任何内存栅栏的时候,很有可能是b在pp设置为p之前设置为pp。read_barrier_depends提供了足够的栅栏,因为*pp是依赖于p的。