Mutex_m

Mutex_m

mutex_m.rbMutex_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 문서에서 확인하세요.