class Concurrent::Transaction
Constants
- ABORTED
- AbortError
- LeaveError
- OpenEntry
Public Class Methods
current()
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 211 def self.current Thread.current[:current_tvar_transaction] end
current=(transaction)
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 215 def self.current=(transaction) Thread.current[:current_tvar_transaction] = transaction end
new()
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 161 def initialize @open_tvars = {} end
Public Instance Methods
abort()
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 191 def abort unlock end
commit()
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 195 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 176 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 165 def read(tvar) entry = open(tvar) entry.value end
unlock()
click to toggle source
# File lib/concurrent-ruby/concurrent/tvar.rb, line 205 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 170 def write(tvar, value) entry = open(tvar) entry.modified = true entry.value = value end