Ruby 多线程并发与环境使用指南
1. 线程与并发
在多线程编程中,线程安全和避免死锁是非常重要的。
1.1 账户操作与锁
在账户操作中,我们可能需要进行资金的转移和余额的查询,为了保证线程安全,需要使用锁机制。以下是一个简单的示例代码:
# Lock account and transfer money from savings to checking
def transfer_from_savings(x)
@lock.synchronize {
@savings -= x
@checking += x
}
end
# Lock account and report current balances
def report
@lock.synchronize {
"#@name\nChecking: #@checking\nSavings: #@savings"
}
end
1.2 死锁问题
当使用 Mutex 对象进行线程互斥时,必须小心避免死锁。死锁是指所有线程都在等待获取其他线程持有的资源,导致所有线程都被阻塞,无法释放自己持有的锁,从而形成死循环。
以下是一个经典的死锁场景示例:
# Classic deadlock: two threads and two locks
require 'thread'
m,n = Mutex.new, Mutex.new
t
超级会员免费看
订阅专栏 解锁全文
78

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



