kfifo 一读一写无锁缓冲区中的memory barrier

Linux kernel实现了一个kfifo,支持一读一写线程的无锁操作。具体代码见kernel/kfifo.c。在2.6稍高一点的版本里都会涉及到memory barrier。本文稍微解释一下memory barrier。

先看一下简单的两行代码:

 26     bool flag = true;
 27     int tmp = 10;

26,27在现代的多核处理器里执行可能是并行的,实际运行过程和表面代码有点差别。

在26,27前后加上memory barrier后,生成指令能保证运行顺序和代码顺序是一样的。

你可能感兴趣的:(linux)