diff options
Diffstat (limited to 'lib/mutex_fix.rb')
-rw-r--r-- | lib/mutex_fix.rb | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/lib/mutex_fix.rb b/lib/mutex_fix.rb deleted file mode 100644 index a844401..0000000 --- a/lib/mutex_fix.rb +++ /dev/null @@ -1,34 +0,0 @@ -require 'thread' - -# monkey patch Mutex so it does not leak memory. -class Mutex - - def lock - while (Thread.critical = true; @locked) - @waiting.unshift Thread.current - Thread.stop - end - @locked = true - Thread.critical = false - self - end - - def unlock - return unless @locked - Thread.critical = true - @locked = false - begin - t = @waiting.pop - t.wakeup if t - rescue ThreadError - retry - end - Thread.critical = false - begin - t.run if t - rescue ThreadError - end - self - end - -end
\ No newline at end of file |