class Concurrent::AbstractThreadLocalVar
@!macro thread_local_var @!macro internal_implementation_note @!visibility private
Public Class Methods
Source
# File lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb, line 11 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 allocate_storage end
@!macro thread_local_var_method_initialize
Public Instance Methods
Source
# File lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb, line 38 def bind(value, &block) if block_given? old_value = self.value begin self.value = value yield ensure self.value = old_value end end end
@!macro thread_local_var_method_bind
Source
# File lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb, line 28 def value raise NotImplementedError end
@!macro thread_local_var_method_get
Source
# File lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb, line 33 def value=(value) raise NotImplementedError end
@!macro thread_local_var_method_set
Protected Instance Methods
Source
# File lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb, line 53 def allocate_storage raise NotImplementedError end
@!visibility private
Source
# File lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb, line 58 def default if @default_block self.value = @default_block.call else @default end end
@!visibility private