mazinlabsのブログ

RubyとかCloudとかその辺の記事を書いたり書かなかったり

Ruby 2.0の機能解説メモ(Mutex)

  * Mutex
    * added method:
      * added Mutex#owned? which returns the mutex is held by current
        thread or not. [experimental]
    * incompatible changes:
      * Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize
        and Mutex#sleep are no longer allowed to be used from trap handler
        and raise a ThreadError in such case.
      * Mutex#sleep may spurious wakeup. Check after wakeup.
  • 追加されたメソッド
    • Mutex#owned?

現在のスレッドによって開かれたミューテックスを返す。または何も返さない。

pry(main)> mutex = Mutex.new
=> #<Mutex:0x007fe47c1a97b8>
pry(main)> mutex.owned?
=> false

よくわからん。

  • 後方互換のない変更
    • Mutex#lock
    • Mutex#unlock
    • Mutex#try_lock
    • Mutex#synchronize
    • Mutex#sleep

これらのメソッドはトラップハンドラーやスレッドエラーの際に利用されることがなくなった。

    • Mutex#sleep

wakeup確認後に間違ってwakeupするかもしれない。