您的位置:首页 > 其它

同步线程—Mutex

2013-12-08 21:05 323 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: