Single Threaded Execution Ruby版
Single Threaded Executionをrubyで書いてみた。
class Gate def initialize() @counter = 0 @name = "Nobody" @address = "Nowhere" end def pass(name, address) @counter += 1 @name = name @address = address check end def toString() return "No." + @counter.to_s + ": " + @name.to_s + ", " + @address.to_s end def check() if @name[0] != @address[0] puts "***** BROKEN ***** " + toString() end end end def go(gate, name, address) t = Thread.new do puts name + " begin" while true gate.pass(name, address) end end return t end gate = Gate.new() aliceThread = go(gate, "Alice", "Alaska") bobbyThread = go(gate, "Bobby", "Blazil") chrisThread = go(gate, "Chris", "Canada") aliceThread.join bobbyThread.join chrisThread.join
こちらは、簡単に競合状態が発生した。
昼ごはんは、ご飯、塩ジャケ、納豆。
晩ごはんのおかずは、ゴーヤーチャンプルー、大根と揚げの味噌汁。