读/写同步

时间:2009-07-05 15:05:35

标签: multithreading winapi synchronization mutual-exclusion read-write

我有一个数据结构,其操作可以分类为读操作(例如查找)和写操作(例如插入,删除)。应同步这些操作,以便:

  • 执行写操作时不能执行读操作(除非在同一个线程上),但读操作可以与其他读操作同时执行。
  • 执行读取或写入操作时,写入操作无法执行(除非在同一线程上)。

如何实现这种同步?

平台是win-api所以api的同步对象和互锁功能是基本构建块。

1 个答案:

答案 0 :(得分:3)

微软推荐的Reader / Writer锁实现在这里(你需要滚动一下,到标题“Reader / Writer locks”):

http://msdn.microsoft.com/en-us/library/ms810427.aspx

供参考,对于那些有相同问题但又拥有.NET的人:

http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx