class TJRWLock
Read/Write Lock (共有・排他ロック)
Public メソッド
- TJRWLock()
- TJRWLock オブジェクトを作成する
- virtual ~TJRWLock()
- TJRWLock オブジェクトを消去する
- virtual bool beginTransaction(LockMode mode, long milliseconds)
- 参照または更新モードでロックを獲得する
- virtual void endTransaction()
- ロックを解放する
- virtual bool isWLocked() const
- 更新モードでロック中ならば true を返す
- virtual bool isRLocked() const
- 参照モードでロック中ならば true を返す
- virtual bool invariant() const
- 不変条件
文書
Read/Write Lock (共有・排他ロック).通常操作が参照であり、まれに更新される共有資源のためのロックである.
* 【注意】 * このクラスには より使い易くしたTJTransaction というクラスを * 用意している. TJRWLock を直接使わず TJTransaction を使うことを * 推奨する. * TJTransaction はこのクラスよりも安全性を高めている. ただし * TJRWLock の一部の機能を制限している. *資源の更新スレッドは更新モードでロックを獲得し、参照スレッドは参照モードで ロックを獲得すること.
参照モードのロックはカウンタで管理しているため同時にN個のスレッドが 獲得可能であるが, 更新モードのロックは1個のスレッドのみ獲得できる.
更新モードのロックではスレッドを記憶するため同一スレッドに限り複数回獲得 可能としている.
更新・参照ともにロックの獲得と解放の回数が同一となることを保証すること.
更新モードのロック獲得に成功して復帰する条件は次のとおり.
* 他のスレッドによる更新ロック状態でなく、かつ参照ロック状態でもない、 * またはカレントスレッドが更新モードでロック中 *参照モードのロック獲得に成功して復帰する条件は次のとおり.
* 更新ロック状態でなく、かつ更新ロック要求もない * 【注意】この更新ロック要求がないという条件から更新スレッドが無限に * 待たされることはないはずである. *尚、上記条件に合致しない場合に、スレッドがブロックするか否かは、 ロック獲得メソッドのパラメータで指定可能である。 (beginTransactionのmilliseconds)
- TJRWLock()
- TJRWLock オブジェクトを作成する
- virtual ~TJRWLock()
- TJRWLock オブジェクトを消去する
- enum LockMode
- 共有・排他モード.
SHARED: 共有モード, EXCLUSIVE: 排他モード
- static const long INFINITE
- 無限に待つことを示す定数
- static const long NONBLOCK
- 待たないことを指定する定数
- virtual bool beginTransaction(LockMode mode, long milliseconds)
- 参照または更新モードでロックを獲得する.
- 返す値 :
- true: ロック成功, false: ロック失敗 milliseconds = INFINITE の場合はロック失敗の可能性はない.
- パラメータ:
- mode - SHARED: 参照モード, EXCLUSIVE: 更新モード
milliseconds - 最大待ち合わせミリ秒数 INFINITE: 無限に待つ NONBLOCK: 獲得できなければエラー復帰
- virtual void endTransaction()
- ロックを解放する
- virtual bool isWLocked() const
- 更新モードでロック中ならば true を返す.
このメソッドは厳密にはきわどい問題を含むが開発中に特定のメソッド がロックされて呼び出されることを保証するために使う.
- 返す値 :
- ロックされていれば true
- virtual bool isRLocked() const
- 参照モードでロック中ならば true を返す.
このメソッドは厳密にはきわどい問題を含むが開発中に特定のメソッド がロックされて呼び出されることを保証するために使う.
- 返す値 :
- ロックされていれば true
- virtual bool invariant() const
- 不変条件.
開発時に assert() の引数として利用できる.
- 返す値 :
- オブジェクトの状態に矛盾がなければ true
- 子クラスは存在しません
- 作者 :
- Susumu TOKUI @date 1998,6/1
索引(アルファベット順) HTMLクラス継承 または Java
This page was generated with the help of DOC++.