FIXME:
Mechanizmy
thread
monitor
sync
#!/usr/bin/env ruby # $Id: mutex2.rb,v 1.1 2005/10/04 08:52:07 radek Exp $ require 'thread' mutex = Mutex.new count1 = count2 = 0 difference = 0 counter = Thread.new do loop do mutex.synchronize do count1 += 1 count2 += 1 end end end spy = Thread.new do loop do mutex.synchronize do difference += (count1 - count2).abs end end end sleep 1 mutex.lock p count1 p count2 p difference
#!/usr/bin/env ruby # $Id: mutex3.rb,v 1.1 2005/10/04 08:52:07 radek Exp $ require 'thread' mutex = Mutex.new cv = ConditionVariable.new a = Thread.new { mutex.synchronize { puts "A: I have critical section, but will wait for cv" cv.wait(mutex) puts "A: I have critical section again! I rule!" } } puts "(Later, back at the ranch...)" b = Thread.new { mutex.synchronize { puts "B: Now I am critical, but am done with cv" cv.signal puts "B: I am still critical, finishing up" } } a.join b.join