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社區目前的觀點或歷史討論,但否則您的答案會很好。 –