From: Robert Klemme Date: 2009-05-08T00:47:27+09:00 Subject: Re: How write a synchronized class 2009/5/7 Tim Pease : > On Thu, May 7, 2009 at 6:38 AM, Guillaume dorchies > wrote: >> Hello >> >> How do to write a synchronized class like in java for Ruby >> >> I try with a Mutex but if a method call another method of the same >> instance I obtain a Deadlock. >> >> > > I wrote a reentrant mutex class at one point in time ... > > http://gist.github.com/108117 > > Give it a shot and see if it fixes your deadlock issue. Sorry, but you could have saved yourself the effort because it's part of the standard library: 17:45:59 $ ruby19 -r monitor -e 'm=Monitor.new;m.synchronize { m.synchronize { p 1 } }' 1 17:46:05 $ ruby19 -r thread -e 'm=Mutex.new;m.synchronize { m.synchronize { p 1 } }' :6:in `lock': deadlock; recursive locking (ThreadError) from :6:in `synchronize' from -e:1:in `block in
' from :8:in `synchronize' from -e:1:in `
' 17:46:17 $ ruby19 -r monitor -e 'm=Monitor.new;m.synchronize { m.synchronize { p 1 } }' 1 17:46:23 $ Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/