سرور سے جڑ کر ایک لاک حاصل کرنے اور فوراً واپس کرنے کا سب سے سادہ سلسلہ۔
broker = Broker.connect(addr)
begin
broker.wait_ready(5)
ticket = broker.acquire("key", wait: 5, lease: 30)
ticket.release
puts "pass"
ensure
broker.close
endکئی تھریڈز بیک وقت اکاؤنٹ کے لحاظ سے لاک کے ذریعے محفوظ رہ کر جمع و انخلا دہراتے رہیں، تب بھی تمام اکاؤنٹ بیلنس آخرکار ابتدائی قدر پر واپس آتے ہیں یا نہیں، اس کی تصدیق کرنے کی مثال ہے۔
def transaction(broker, balances, account, delta, log)
key = "account-#{account}"
ticket =
begin
broker.acquire(key, wait: WAIT, lease: LEASE)
rescue StandardError => e
log.error("account #{account} acquire failed: #{e}")
return
end
before = balances[account]
Thread.pass
after = before + delta
balances[account] = after
ticket.release
action, sign = delta < 0 ? ["withdraw", "-"] : ["deposit", "+"]
log.info("account #{account} #{action} #{sign}$#{AMOUNT} -> $#{after}")
endمکمل مثال test_example.rb، test_bank_example.rb، test_bench.rb میں دیکھیں۔