Mutex_m
Mutex_m
mutex_m.rb — Mutex_m이 require되면, Mutex_m을 extend하거나 include한 어떤 객체든 Mutex처럼 취급돼요.
출처: Ruby 3.3 API
본문
먼저 표준 라이브러리 Mutex_m을 require해요.
require "mutex_m.rb"
이제 객체에 Mutex 인스턴스 메서드를 extend할 수 있어요.
obj = Object.new
obj.extend Mutex_m
또는 Mutex_m을 모듈에 믹스인해서 클래스가 Mutex 인스턴스 메서드를 상속받게 할 수 있어요. 이때 클래스의 initialize 메서드에서 반드시 super()를 호출해야 한다는 점을 기억하세요.
class Foo
include Mutex_m
def initialize
# ...
super()
end
# ...
end
obj = Foo.new
# this obj can be handled like Mutex
Constants
VERSION
Mutex_m 모듈의 버전 문자열이에요.
Public Instance Methods
mu_lock()
잠금을 획득해요. Thread::Mutex#lock을 참고하세요.
mu_locked?()
잠겨 있으면 true를 돌려줘요. Thread::Mutex#locked?을 참고하세요.
mu_synchronize()
블록을 실행하는 동안 잠금을 보유해요. Thread::Mutex#synchronize를 참고하세요.
mu_try_lock()
잠금 획득을 시도하고, 실패하면 false를 돌려줘요. Thread::Mutex#try_lock을 참고하세요.
mu_unlock()
잠금을 해제해요. Thread::Mutex#unlock을 참고하세요.
sleep(timeout = nil)
잠금을 보유한 채 잠시 대기해요. Thread::Mutex#sleep을 참고하세요.
더 알아보기
- 실제 잠금 구현은
Thread::Mutex문서에서 확인하세요.