Monitor

Monitor

Monitor은 블록에 상호 배제(mutual exclusion)를 적용하는 락(lock) 객체가 필요할 때 사용하는 클래스예요.

require 'monitor'

lock = Monitor.new
lock.synchronize do
  # exclusive access
end

출처: Ruby 4.0 API

본문

Monitor의 방식은 여러 스레드가 동시에 들어오지 못하도록, 한 번에 한 스레드만 임계 구역을 실행하게 하는 거예요. synchronize 블록이 끝나면 알아서 잠금이 풀리기 때문에 실수로 락을 풀지 않는 일이 없어요.

Public Instance Methods

enter → nil

임계 구역(배타 구역)에 진입해요. mon_enter로도 부를 수 있어요.

exit → nil

임계 구역에서 나와요. mon_exit로도 부를 수 있어요.

mon_enter

enter의 별칭이에요.

mon_exit

exit의 별칭이에요.

mon_synchronize

synchronize의 별칭이에요.

mon_try_enter

try_enter의 별칭이에요.

new_cond ()

Monitor 객체와 연결된 새 MonitorMixin::ConditionVariable을 만들어요.

synchronize { } → result of the block

임계 구역에 들어가 블록을 실행해요. 블록이 끝나면 자동으로 임계 구역에서 나와요. 예시는 MonitorMixin 문서를 참고하세요. mon_synchronize로도 부를 수 있어요.

try_enter → true or false

임계 구역 진입을 시도해요. 락을 얻지 못하면 false를 돌려줘요. try_mon_enter, mon_try_enter로도 부를 수 있어요.

try_mon_enter

try_enter의 별칭이에요.