, 당신은 모든 인스턴스 및 방법 Mutex
을 만들어야합니다 : Thread.exclusive
걸릴 인수를 갖는 논리적 오류가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
왜 뮤텍스를 만들?
John, 감사합니다. 나는 루비 커뮤니티의 역사적 토론이나 현재의 사고 방식을 가리키는 답변을 얻을 수 있는지 알아보기 위해 며칠 더 기다려야 하겠지만 그렇지 않다면 당신의 대답은 훌륭합니다. –