core.sync.rwmutex
remutex モジュールは、 共有の読み取りと相互排他の書き込みアクセス機能を実現する同期プリミティブを提供します。 License:Boost License 1.0. Authors:
Sean Kelly Source:
core/sync/rwmutex.d
- このクラスは、任意の数の読み取りスレッドから同時アクセスできるけれど、
書き込みアクセスの最中は他のすべての読み書きがブロックされるMutexの実装です。
このMutexは再帰的ではなく、データへのアクセスのガードのみを意図していることにご注意下さい。
さらに、パフォーマンスに無視できない悪影響を及ぼす動的メモリ確保が必要となってしまうため、
デッドロック検査の機能もありません。
結果として、再帰的にこのMutexをロックしようとすると、
特に読み取りロック中に書き込みロックしようとする或いはその逆のケースで、
デッドロックします。しかし現実問題としては、これは問題とはならないでしょう。
というのは、単にデータを保護するためだけのロックの最中に、
未知のコードの奥深くを呼び出すような事態はあまりないはずですから。
- Mutexのポリシー定義です。現在の所、
二つのポリシーが用意されています。
1つめは、読み取りロックが1つもなくなるまで、書き込みを待機するポリシーです。
読み取りロックがないときには、1つずつ書き込みを実行します。
書き込み待ちの行列が並んでいるときであっても、後から来た読み取りロックの方が優先されます。
2つめは、書き込みロックが1つもなくなるまで、読み取りを待機するポリシーです。
書き込みは1つずつ実行され、一つも書き込み待ちが無くなると、
全ての読み取り待ちスレッドに通知が飛びます。
将来的には、読み取りと書き込みの間にもっとバランスを取ったポリシーを提供できるかもしれません。
- 読み取り優先。書き込み側にスタベーションが発生する可能性があります。
- 書き込み優先。読み取り側にスタベーションが発生する可能性があります。
- this(Policy policy = (Policy).PREFER_WRITERS);
- 読み書きMutexオブジェクトを指定のポリシーで初期化します。
Parameters:
Throws:Policy policy 使うポリシー
エラー時に SyncException - このMutexのポリシーを返します
Returns:
このMutexのポリシー - このMutexに対する読み取りアクセスを表現したMutexを返します。
Returns:
読み取りロック用Mutexを返します。 - このMutexに対する書き込みアクセスを表現したMutexを返します。
Returns:
書き込みロック用Mutexを返します。 - このオブジェクトは単独で単なるMutexとしてみることができ、
元のMutexへの読み込みアクセスを獲得するためのロックを表します。
- this();
- オブジェクトを初期化します。
- 元のMutexへの読み取りアクセスを獲得します。
- 元のMutexへの読み取りアクセスを解放します。
- 元のMutexへの読み込みアクセスの獲得を試みます。
ブロックされなかった場合はロックを獲得し、true を返します。
ブロックされた場合は false をすぐに返します。
Returns:
ロックが獲得できれば true、できなければ false
- このオブジェクトは単独で単なるMutexとしてみることができ、
元のMutexへの書き込みアクセスを獲得するためのロックを表します。
- this();
- オブジェクトを初期化します。
- 元のMutexへの書き込みアクセスを獲得します。
- 元のMutexへの書き込みアクセスを解放します。
- 元のMutexへの書き込みアクセスの獲得を試みます。
ブロックされなかった場合はロックを獲得し、true を返します。
ブロックされた場合は false をすぐに返します。
Returns:
ロックが獲得できれば true、できなければ false
Copyright Sean Kelly 2005 - 2009.
|
Page generated by Ddoc.