Bla*_*laM 2 c++ linux multithreading mutex
我有一个多线程C++应用程序,它在内存中保存一个复杂的数据结构(缓存数据).
我刚读完数据时一切都很棒.我可以拥有尽可能多的线程来访问数据.
但是,缓存的结构不是静态的.
"伪":
function getItem(key)
lockMutex()
foundItem = walkTreeToFindItem(key)
copyItem(foundItem, safeCopy)
unlockMutex()
return safeCopy
end function
function garbageCollection()
while item = nextItemInTree
if (tooOld) then
lockMutex()
deleteItem(item)
unlockMutex()
end if
end while
end function
Run Code Online (Sandbox Code Playgroud)
什么困扰我:这意味着,我在阅读时必须锁定树(以避免在我阅读时开始垃圾收集).然而 - 作为一种副作用 - 我也不能同时拥有两个阅读过程.
有什么建议?
是否存在某种"这只是一种只与写入冲突的只读动作"Mutex?
| 归档时间: |
|
| 查看次数: |
3084 次 |
| 最近记录: |