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