第三章中也讲了原子操作,原子操作就是指单位操作,就是说,原子操作在执行的过程中不能被中断,并且也需要通过某些机制使语言中看似原子的操作语句编程原子语句,否则的话,在并发的环境总可能会产生脏数据。非0值和0,一般是指1和0。但对于有的平台,可能会将非0值解释成-1或其他的非0值。为了适应各种平台非0值和0就可以表示这两类的值了。Linux内核还提供了可以用原子方式进行位操作的功能,也就是位原子操作,这种操作的操作类型不是atomic_t,是unsighed long,所以说这些位原子操作函数在32位系统中操作的是32bit,但是在64位系统中操作的是64bit。原子操作是一种很好的避免竞态的方式,使用非常简单。但在某些方面却显得过于简单。自旋锁从本质上讲就是保证代码段的操作是原子的。也就是说,如果要保证某段代码在整形期间不会被打断,就要在代码段执行之前申请自旋锁,在执行完原子操作中的代码段后,再释放自旋锁。其实自旋锁从使用方法上来说和原子操作是及其相似的,可以想象成一个变量。