Sync_m

Synchronizer_mの別名

目的・概要

Mix-inにより再入可能なreader/writerロック機能を提供する。

includeしたクラスではinitializeでsuperを呼び出しておく必要がある。 (ruby 1.7 feature)

ロック状態

Sync_m::UN

ロックされていない状態。

Sync_m::EX

排他ロック。 オブジェクトの状態を更新する場合のように、 1つのスレッドがオブジェクトを独占的に使用したい場合に用いる。 排他ロック中に他のスレッドはオブジェクトを共有/排他ロックできない。

Sync_m::SH

共有ロック。 複数のスレッドが同時にオブジェクトを使用できる場合に用いる。 複数のスレッドが共有ロックしている場合、 どのスレッドもオブジェクトを排他ロックできない。

モジュールメソッド

Sync_m#sync_mode

現在のロック状態を返す。

Sync_m#sync_locked?
Sync_m#locked?

ロックされているかどうかを返す。

Sync_m#sync_shared?
Sync_m#shared?

共有ロックされているかどうかを返す。

Sync_m#sync_exclusive?
Sync_m#exclusive?

排他ロックされているかどうかを返す。

Sync_m#sync_try_lock(mode = EX)
Sync_m#try_lock(mode = EX)

ロック状態を変更する。 変更できたかどうかをtrueかfalseで返し、ブロックしない。

Sync_m#sync_lock(mode = EX)
Sync_m#lock(mode = EX)

ロック状態を変更する。 変更できるまで現在のスレッドの実行をブロックする。

Sync_m#sync_unlock(mode = EX)
Sync_m#unlock(mode = EX)

ロックを解除する。

Sync_m#sync_synchronize(mode = EX) {...}
Sync_m#synchronize(mode = EX) {...}

ロック状態を変更してブロックを実行する。