Ruby 2


def func1
  i=0
  while i<=2
    puts "func1 at: #{Time.now}"
    sleep(2)
    i+=1
  end
end

def func2
  j=0
  while j<=2
    puts "func2 at: #{Time.now}"
    sleep(1)
    j+=1
  end
end

puts "Started At #{Time.now}"
t1=Thread.new{func1()}
t2=Thread.new{func2()}
t1.join
t2.join
puts "End at #{Time.now}"

Ruby 代码不同python,不需要完整完全格式化

require 'thread'
puts "Synchronize Thread"

@num = 200
@mutex = Mutex.new

def buyTicket(num)
  @mutex.lock
  # 不一定非要格式化
  if @num >= num
    @num -= num
    puts "You have successfully bought #{num} tickets"
  else
    puts "Sorry,no enough tickets"
  end
  @mutex.unlock
end

ticket1=Thread.new 10 do
  10.times do |value|
    ticketNum=15
    buyTicket(ticketNum)
    sleep 0.01
  end
end

ticket2=Thread.new 10 do
  10.times do |value|
    ticketNum = 20
    buyTicket(ticketNum)
    sleep 0.01
  end
end

sleep 1
ticket1.join
ticket2.join

猜你喜欢

转载自www.cnblogs.com/ukzq/p/13376185.html