1
如果你想锁定实例的方法,你必须创建为每个实例和方法的Mutex
:是否有一个合乎逻辑的原因,Thread.exclusive不采用“范围”参数?
class Foo
def initialize
@blue_mutex = Mutex.new
@red_mutex = Mutex.new
end
def blue
@blue || @blue_mutex.synchronize do
@blue ||= Blue.new
end
end
def red_mutex
@red || @red_mutex.synchronize do
@red ||= Red.new
end
end
end
有具有Thread.exclusive
带参数的一个逻辑上的错误?
class Foo
def blue
@blue || Thread.exclusive("#{object_id}/blue") do
@blue ||= Blue.new
end
end
def red
@red || Thread.exclusive("#{object_id}/red") do
@red ||= Red.new
end
end
end
为什么要创建互斥量,如果Thread.exclusive
可能只是把它定义了排他性的范围的争论?
约翰,谢谢。我将再等几天,看看我能否得到一个答案,指出Ruby社区目前的观点或历史讨论,但否则您的答案会很好。 –