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

  • 执行写操作时,读操作不能执行(除非在同一线程上),但是读操作可以与其他读操作同时执行。
  • 当读或写操作正在执行时,写操作不能执行(除非在同一线程上)。

这种同步如何实现呢?

该平台是 win-api,因此 api 的同步对象和互锁函数是基本构建块。

有帮助吗?

解决方案

微软推荐的读/写锁实现在这里(你必须滚动一下,到标题“读/写锁”):

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

作为参考,对于那些有同样问题但拥有 .NET 的人:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top