有没有人知道读/写锁的现有ruby实现 - http://en.wikipedia.org/wiki/Readers-writer_lock?
最好是在一个受欢迎的图书馆或其他一些已经被足够的人使用的实施方案,以至于它在这一点上相当无懈可击。
答案 0 :(得分:3)
据我所知,没有标准的,但写起来并不是很难。如果不这样做,this guy已经写了一个。看起来很正确,他提供了测试。
答案 1 :(得分:1)
Jonas博客中的链接现已破损,但我已经构建并测试了另一个实现,欢迎任何想要使用它的人:
https://github.com/alexdowad/showcase/blob/master/ruby-threads/read_write_lock.rb
答案 2 :(得分:0)
在concurrent-ruby
gem中,您会找到Concurrent::ReadWriteLock
和Concurrent::ReentrantReadWriteLock
。
lock = Concurrent::ReadWriteLock.new
lock.with_read_lock { data.retrieve }
lock.with_write_lock { data.modify! }