Revision: 23999
Updated Code
at February 18, 2010 09:56 by sai-venkat
Updated Code
require "java"
require "clojure.jar"
include_class "clojure.lang.LockingTransaction"
include_class "clojure.lang.Ref"
my_account = Ref.new(1)
puts "Initial value #{my_account.deref}"
begin
my_account.set(1000)
rescue java.lang.IllegalStateException
puts "Reference updated outside a transaction.. Naughty.. :)"
end
puts "Value after failed update #{my_account.deref}"
Thread.new {LockingTransaction.run_in_transaction(Proc.new { my_account.set 1000 })}
Thread.new {LockingTransaction.run_in_transaction(Proc.new { sleep 0.1; my_account.set 21000 })} # Will fail because get commited after first transaction
puts "Value after successful transaction #{my_account.deref}"
Revision: 23998
Updated Code
at February 18, 2010 09:55 by sai-venkat
Updated Code
require "java"
require "clojure.jar"
include_class "clojure.lang.LockingTransaction"
include_class "clojure.lang.Ref"
my_account = Ref.new(1)
puts "Initial value #{my_account.deref}"
begin
my_account.set(1000)
rescue java.lang.IllegalStateException
puts "Reference updated outside a transaction.. Naughty.. :)"
end
puts "Value after failed update #{my_account.deref}"
Thread.new {LockingTransaction.run_in_transaction(Proc.new { my_account.set 1000 })}
Thread.new {LockingTransaction.run_in_transaction(Proc.new { sleep 0.1; my_account.set 21000 })} # Will fail because get commited after first transaction
puts "Value after successful transaction #{my_account.deref}"
Revision: 23997
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 18, 2010 09:30 by sai-venkat
Initial Code
require "java"
require "clojure.jar"
include_class "clojure.lang.LockingTransaction"
include_class "clojure.lang.Ref"
my_account = Ref.new(1)
puts "Initial value #{my_account.deref}"
begin
my_account.set(1000)
rescue java.lang.IllegalStateException
puts "Reference updated outside a transaction.. Naughty.. :)"
end
puts "Value after failed update #{my_account.deref}"
LockingTransaction.run_in_transaction(Proc.new { my_account.set 1000 })
puts "Value after successful transaction #{my_account.deref}"
Initial URL
Initial Description
Initial Title
Clojure STM in JRuby
Initial Tags
ruby
Initial Language
Ruby