-
23-08-2019 - |
题
我有一个数据结构,其操作可以归类为读取操作(例如查找)和写入操作(例如插入、删除)。这些操作应该同步,以便:
- 执行写操作时,读操作不能执行(除非在同一线程上),但是读操作可以与其他读操作同时执行。
- 当读或写操作正在执行时,写操作不能执行(除非在同一线程上)。
这种同步如何实现呢?
该平台是 win-api,因此 api 的同步对象和互锁函数是基本构建块。
解决方案
微软推荐的读/写锁实现在这里(你必须滚动一下,到标题“读/写锁”):
http://msdn.microsoft.com/en-us/library/ms810427.aspx
作为参考,对于那些有同样问题但拥有 .NET 的人:
http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx
不隶属于 StackOverflow