Mix-inにより再入可能なreader/writerロック機能を提供する。
includeしたクラスではinitializeでsuperを呼び出しておく必要がある。 (ruby 1.7 feature)
ロックされていない状態。
排他ロック。 オブジェクトの状態を更新する場合のように、 1つのスレッドがオブジェクトを独占的に使用したい場合に用いる。 排他ロック中に他のスレッドはオブジェクトを共有/排他ロックできない。
共有ロック。 複数のスレッドが同時にオブジェクトを使用できる場合に用いる。 複数のスレッドが共有ロックしている場合、 どのスレッドもオブジェクトを排他ロックできない。
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) {...}
ロック状態を変更してブロックを実行する。