![]() |
1
5
听起来你在找 readers-/writer-lock . 这是一个锁,可用于让许多线程读取数据结构,但当一个线程具有写访问权限时,所有其他线程都被锁定。 Boost提供了 implementation . |
![]() |
2
0
你在窗户上吗? 如果是,则可以使用事件或互斥对象等同步对象。 对于insert和delete,可以在这些函数的开头锁定互斥锁,在函数的结尾释放互斥锁。 步骤如下。
读取不需要获取锁。所以不需要事件或互斥来读取。多个线程可以从共享缓冲区并发读取。 你可以在 http://en.wikipedia.org/wiki/Readers-writer_lock 你可以在 http://msdn.microsoft.com/en-us/library/ms686915(v=VS.85).aspx |
![]() |
3
0
听起来像是一个香草读者作家锁不完全是你想要的。一旦您尝试获取锁的writer端,其他读卡器将阻塞,直到writer完成,而您说您希望执行读操作的其他线程获得访问权限,即使存在挂起的插入。 我不确定你想要的是不是安全。如果正在进行足够的读取,则插入/删除可能会永远阻塞。 如果你真的想这样做,你可以很容易地自己构建它,就像你可以很容易地在标准互斥锁之上构建一个读写锁一样。 请注意,这段代码可能已损坏,但可能会给您一个大致的概念。
一个典型的reader/writer锁的工作原理与此类似,只是有一个标志阻止读者在writer等待时获取锁。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 6 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 6 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 6 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 6 月前 |