Confused by sync.rb ?
May 18th, 2008
I needed a reader/writer lock the other day and followed the trail to ruby's Sync class (why this gets to call itself Sync/Synchronizer as opposed to all the other synchronisation primitives is beyond me). The documentation isn't exactly enlightening either. I'm sure there's all sorts of clever stuff to do with upgrading a lock you already hold and other stuff like that, but if you're just interested in the boring case all you need is
lock = Sync.new lock.synchronize(Sync::EX) do #do something that requires a writer (exclusive) lock end lock.synchronize(Sync::SH) do #do something that requires a reader (shared) lock end
Sorry, comments are closed for this article.