在Linux Kernel Development (3rd Edition)中,内核同步方法,排序和障碍。有一个例子:
我对本书中的陈述感到困惑:
同样,在没有记忆障碍的情况下,可以在将pp设置为p之前将b设置为pp。
那么,作者是否意味着如果没有read_barrier_depends()
,b = *pp
会在pp = p
之前被执行?怎么可能这样呢?
我对你的问题感兴趣,所以我搜索了一下。我在内核列表上找到了read_barrier_depends功能的帖子,并有一些解释: