Linux内核中的少锁链表

前言

最近在stackexchange上看到一个问答,讨论我们常用的数据结构与算法在实际工程中的应用。(戳我)

我打算借助这个问答中的内容,以我比较熟悉的数据结构与算法为索引来阅读开源代码。

正文

Talk is cheap

Lock-less NULL terminated single linked list

linux-2.6/include/linux/llist.h

linux-2.6/lib/llist.c

知识准备

volatile

volatile关键字声明的变量或对象通常拥有和优化和(或)多线程相关的特殊属性。

通常,volatile关键字用来阻止(伪)编译器对那些它认为变量的值不能“被代码本身”改变的代码上执行任何优化。

如果不使用volatile关键字,编译器将假设当前程序是系统中唯一能改变这个值部分。 为了阻止编译器像上面那样优化代码,需要使用volatile关键字。

From: http://zh.wikipedia.org/wiki/Volatile%E5 …

more ...