class Concurrent::Transaction
@!visibility private
Constants
- ABORTED
- AbortError
- LeaveError
- OpenEntry
Public Class Methods
current()
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 212 def self.current Thread.current[:current_tvar_transaction] end
current=(transaction)
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 216 def self.current=(transaction) Thread.current[:current_tvar_transaction] = transaction end
new()
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 162 def initialize @open_tvars = {} end
Public Instance Methods
abort()
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 192 def abort unlock end
commit()
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 196 def commit @open_tvars.each do |tvar, entry| if entry.modified tvar.unsafe_value = entry.value end end unlock end
open(tvar)
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 177 def open(tvar) entry = @open_tvars[tvar] unless entry unless tvar.unsafe_lock.try_lock Concurrent::abort_transaction end entry = OpenEntry.new(tvar.unsafe_value, false) @open_tvars[tvar] = entry end entry end
read(tvar)
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 166 def read(tvar) entry = open(tvar) entry.value end
unlock()
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 206 def unlock @open_tvars.each_key do |tvar| tvar.unsafe_lock.unlock end end
write(tvar, value)
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 171 def write(tvar, value) entry = open(tvar) entry.modified = true entry.value = value end