Ruby 多线程与多进程编程:从基础到高级应用
1. 互斥锁与线程操作
在多线程编程中,互斥锁(Mutex)是一种重要的同步机制,用于保护共享资源,避免多个线程同时访问而导致的数据竞争问题。Ruby 提供了 Mutex 类来实现互斥锁的功能。
使用 ensure 语句可以确保解锁命令即使在 puts 方法抛出异常时也能执行。如果持有互斥锁并想临时解锁,允许其他线程使用该锁,可以调用 Mutex#sleep 方法。
以下是一个使用互斥锁的示例代码:
rate_mutex = Thread::Mutex.new
exchange_rates = ExchangeRates.new
exchange_rates.update_from_online_feed
Thread.new do
rate_mutex.lock
loop do
rate_mutex.sleep(3600)
exchange_rates.update_from_online_feed
end
end
loop do
print "Enter currency code and amount: "
line = gets
if rate_mutex.try_lock
begin
puts(exchange_rates.convert(line))
ensure
puts "Ensuring unlock"
rate_mutex.unlock
end
超级会员免费看
订阅专栏 解锁全文
1455

被折叠的 条评论
为什么被折叠?



