class Concurrent::FiberLocals

@!visibility private @!macro internal_implementation_note An array-backed storage of indexed variables per fiber.

Public Instance Methods

locals() click to toggle source
# File lib/concurrent-ruby/concurrent/atomic/locals.rb, line 167
def locals
  Thread.current[:concurrent_fiber_locals]
end
locals!() click to toggle source
# File lib/concurrent-ruby/concurrent/atomic/locals.rb, line 171
def locals!
  thread = Thread.current
  locals = thread[:concurrent_fiber_locals]

  unless locals
    locals = thread[:concurrent_fiber_locals] = []
    weak_synchronize do
      @all_arrays[locals.object_id] = locals
    end
    # When the fiber goes out of scope, we should delete the associated locals:
    ObjectSpace.define_finalizer(Fiber.current, thread_fiber_finalizer(locals.object_id))
  end

  locals
end