我有一个数据结构,它的操作可以分为读操作(例如查找)和写操作(例如插入、删除)。这些操作应该同步,以便:
- 执行写入操作时不能执行读取操作(除非在同一线程上),但是读取操作可以与其他读取操作同时执行。
- 在执行读取或写入操作时无法执行写入操作(除非在同一线程上)。
这种同步如何实现?
该平台是win-api,因此api的同步对象和联锁功能是基本的构建块。
我有一个数据结构,它的操作可以分为读操作(例如查找)和写操作(例如插入、删除)。这些操作应该同步,以便:
这种同步如何实现?
该平台是win-api,因此api的同步对象和联锁功能是基本的构建块。
Microsoft 推荐的 Reader/Writer locks 实现在这里(您必须滚动一点,到标题“Reader/Writer locks”):
http://msdn.microsoft.com/en-us/library/ms810427.aspx
作为参考,对于那些有同样问题但拥有 .NET 奢侈的人:
http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx