Class: Concurrent::ThreadLocalVar

Inherits:
Object
  • Object
show all
Includes:
ThreadLocalJavaStorage, ThreadLocalNewStorage, ThreadLocalOldStorage
Defined in:
lib/concurrent/atomic/thread_local_var.rb

Constant Summary collapse

NIL_SENTINEL =
Object.new

Constants included from ThreadLocalSymbolAllocator

Concurrent::ThreadLocalSymbolAllocator::COUNTER

Instance Method Summary collapse

Constructor Details

#initialize(default = nil) ⇒ ThreadLocalVar

Returns a new instance of ThreadLocalVar.



86
87
88
89
# File 'lib/concurrent/atomic/thread_local_var.rb', line 86

def initialize(default = nil)
  @default = default
  allocate_storage
end

Instance Method Details

#valueObject



91
92
93
94
95
96
97
98
99
100
101
# File 'lib/concurrent/atomic/thread_local_var.rb', line 91

def value
  value = get

  if value.nil?
    @default
  elsif value == NIL_SENTINEL
    nil
  else
    value
  end
end

#value=(value) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
# File 'lib/concurrent/atomic/thread_local_var.rb', line 103

def value=(value)
  if value.nil?
    stored_value = NIL_SENTINEL
  else
    stored_value = value
  end

  set stored_value

  value
end