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의 별칭이에요.