有一资源(一片内存)需要同步访问,访问者有"读线程10个","写线程1个"
需要达到目的是:10个读线程都可以同时读取数据,但在写入时所有线程不能读取
不知如何同步才能实现最高效率
------解决方案--------------------------------------------------------
那么是否读的时候也不能写呢?否则也会出现不一致的问题。
如果楼主的结构适合用链表,并且读要远远大于写,可以考虑用RCU技术。
否则就用一个引用计数来统计读线程个数。用一个变量标记写线程。
写线程开始,将写标记置1,当写线程设置为1时,新的读线程不能进入。而当读引用计数降至0时,写线程才可以写,写完后写标记置0。
------解决方案--------------------------------------------------------
操作系统 读者写者问题
http://blog.csdn.net/lenic/archive/2009/10/15/4675142.aspx