あなたはインスタンスのメソッドをロックしたい場合、あなたはすべてのインスタンスとメソッドの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
はちょうど独占の範囲を定義する引数を取ることができれば、なぜミューテックスを作成しますか?
ジョン、ありがとう。私は、歴史的な議論や現在のルビーコミュニティの考え方を指し示す答えを得ることができるかどうかを確認するために、さらに数日待つつもりですが、そうでなければあなたの答えは素晴らしいです。 –