Method: Concurrent::ThreadLocalVar#initialize

Defined in:
lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb

#initialize(default = nil, &default_block) ⇒ ThreadLocalVar

Creates a thread local variable.

Parameters:

  • default (Object) (defaults to: nil)

    the default value when otherwise unset

  • default_block (Proc)

    Optional block that gets called to obtain the default value for each thread



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb', line 51

def initialize(default = nil, &default_block)
  if default && block_given?
    raise ArgumentError, "Cannot use both value and block as default value"
  end

  if block_given?
    @default_block = default_block
    @default = nil
  else
    @default_block = nil
    @default = default
  end

  @index = LOCALS.next_index(self)
end