同步线程—Mutex

来源:互联网 发布:大杆子 淘宝 编辑:程序博客网 时间:2024/06/09 17:26

Mutex-lock & unlock

[Code:]

@num=200

@mutex=Mutex.new

def ticketNum(num)

  @mutex.lock

  Thread.pass

  if (@num>=num)

    @num-=num

    puts "您已经成功购买#{num}张火车票"

  else

    puts "对不起,您购买的#{num}张火车票失败,已经没有了"

  end

  @mutex.unlock

end

ticketsuccess=Thread.new(199){|num| ticketNum(num)}

ticketsuccess1=Thread.new(2){|num| ticketNum(num)}

ticketsuccess.join

ticketsuccess1.join

[Result:]

您已经成功购买199张火车票

对不起,您购买的2张火车票失败,已经没有了


Mutex-synchronize:

[Code:]

@num=200

@mutex=Mutex.new

def ticketNum(num)

  @mutex.synchronize

  Thread.pass

  if (@num>=num)

    @num-=num

    puts "您已经成功购买#{num}张火车票"

  else

    puts "对不起,您购买的#{num}张火车票失败,已经没有了"

  end

 end

end

ticketsuccess=Thread.new(199){|num| ticketNum(num)}

ticketsuccess1=Thread.new(2){|num| ticketNum(num)}

ticketsuccess.join

ticketsuccess1.join

[Result:]

您已经成功购买199张火车票

对不起,您购买的2张火车票失败,已经没有了


Mutex-try_lock:

mutex=Mutex.new

mutex.lock

if mutex.try_lock(值为false)