Skip to content.

Sections
Personal tools
You are here: Home » ダウンロード » ThreadJack用 » doc » TJRWLock

Document Actions

class TJRWLock

Read/Write Lock (共有・排他ロック)

Public クラス

[more]enumLockMode
共有・排他モード

Public メンバ

[more]static const long INFINITE
無限に待つことを示す定数
[more]static const long NONBLOCK
待たないことを指定する定数

Public メソッド

[more]TJRWLock()
TJRWLock オブジェクトを作成する
[more]virtual ~TJRWLock()
TJRWLock オブジェクトを消去する
[more]virtual bool beginTransaction(LockMode mode, long milliseconds)
参照または更新モードでロックを獲得する
[more]virtual void endTransaction()
ロックを解放する
[more]virtual bool isWLocked() const
更新モードでロック中ならば true を返す
[more]virtual bool isRLocked() const
参照モードでロック中ならば true を返す
[more]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++.