烽驿2009开源实时通信平台 源码获取:svn checkout http://fy2009.googlecode.com/svn/trunk/ fy2009-read-only
在线程间共享内存时需要加锁应该算是多线程编程的常识了,因此,这个标题显得有些颠覆性。但请注意这
里说的是共享内存,而标题说的是通信,两者并不是一回事,仔细分析,后者在内涵上应该包括前者
,即通信才是目的,而共享内存通常只是手段。线程间可能的通信手段并不仅限于共享内存,还可以通过
Socket,文件和管道等IO设备,而且线程间在通过这些IO设备进行通信时并不需要加锁,至此,文章标题
看起来又成了费话。但这些IO设备只是理论上可用作线程间通信手段,实际上在和共享内存相比时,它们
过于笨重,且效率低下,并不具有实用价值。本文所说的通信手段当然不是指这些IO设备,因此,它仍然
具有相当的新意。本项目将试图实现这样一种“装置”。
它的核心原理是:对一个被申明为volatile int型变量的赋值操作为原子操作。依据如下:
typedef struct { volatile int counter; } atomic_t;
…
/**
* atomic_read - read atomic variable
* @v: pointer of type atomic_t
*
* Atomically reads the value of @v. Note that the guaranteed
* use