module Concurrent::ThreadSafe::Util

@!visibility private

@!visibility private

@!visibility private

@!visibility private

@!visibility private

@!visibility private

Constants

CPU_COUNT

TODO (pitr-ch 15-Oct-2016): migrate to Utility::ProcessorCounter

FIXNUM_BIT_SIZE

TODO (pitr-ch 15-Oct-2016): migrate to Utility::NativeInteger

MAX_INT

Public Class Methods

allocate() click to toggle source
Calls superclass method
# File lib/concurrent/thread_safe/util/array_hash_rbx.rb, line 13
def self.allocate
  obj = super
  obj.send(:_mon_initialize)
  obj
end
make_synchronized_on_rbx(klass) click to toggle source
# File lib/concurrent/thread_safe/util/array_hash_rbx.rb, line 6
      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 "            def #{method}(*args)
              @_monitor.synchronize { super }
            end
", __FILE__, __LINE__ + 1
        end
      end

Public Instance Methods

_mon_initialize() click to toggle source
# File lib/concurrent/thread_safe/util/array_hash_rbx.rb, line 9
def _mon_initialize
  @_monitor = Monitor.new unless @_monitor # avoid double initialisation
end