Sha256: e7c9029f05a42a2d41fed7f6e067fac91a8aeb029d9a2c6003306fc168f31a53
Contents?: true
Size: 723 Bytes
Versions: 89
Compression:
Stored size: 723 Bytes
Contents
require 'concurrent/thread_safe/util' module Concurrent module ThreadSafe module Util def self.make_synchronized_on_rbx(klass) klass.class_eval do private def _mon_initialize @_monitor = Monitor.new unless @_monitor # avoid double initialisation end def self.allocate obj = super obj.send(:_mon_initialize) obj end end klass.superclass.instance_methods(false).each do |method| klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1 def #{method}(*args) @_monitor.synchronize { super } end RUBY end end end end end
Version data entries
89 entries across 83 versions & 22 rubygems