Ruby:基于哈希的内存和线程安全缓冲区?
|
我正在Redis支持的库中实现一种写/存储缓冲区,以将多个“ 0”调用压缩为一个调用。缓冲区必须是完全原子的,并且可以跨多个线程工作。
因此,我是处理线程安全的新手。是否有任何现有的库或标准化的方法来实现在线程环境中运行良好的全局基于哈希的缓冲区/队列?
例如,缓冲区散列的工作方式类似于此伪代码:
buffer #=> { :ident1 => { :value_a => 1, :value_b => 4 },
# :ident2 => { :value_a => 2, :value_b => 3 } }
buffer[:ident1][:value_a] #=> 1
# saving merges and increments {:value_a => 2} into buffer[:ident1]
save(:ident1, {:value_a => 2})
buffer[:ident1][:value_a] #=> 3
这个想法是在X数目的save
调用之后,通过对缓冲区中的每个项调用save
来刷新缓冲区。
没有找到相关结果
已邀请:
1 个回复
墩瓣茅械
thread5ѭ块中的代码是每个线程原子的;直到前一个线程用该块完成后,一个线程才能进入ѭ6。 另请参见:Pure-Ruby并发哈希