メインページ | モジュール | 名前空間一覧 | クラス階層 | 構成 | ファイル一覧 | 名前空間メンバ | 構成メンバ | ファイルメンバ | 関連ページ

クラス テンプレートtoppers::recursive_lock< LockObj, SenseKernel > の解説
[同期機構]

ネスト可能なクリティカルセクションを生成するためのテンプレートクラス [詳細]

#include <toppers/sync.hpp>

すべてのメンバ一覧

Public メンバ関数

 recursive_lock ()
 デフォルトコンストラクタ

template<typename T>  recursive_lock (T arg)
 パラメータ指定のコンストラクタ

 ~recursive_lock () throw ()
 デストラクタ


解説

template<class LockObj, bool SenseKernel = false>
class toppers::recursive_lock< LockObj, SenseKernel >

例外安全なクリティカルセクションを、指定したロック機構を用いて生成する。 lock テンプレートクラスとは異なり、本クラスではネスティングが可能である。 誤使用を避けるため、このクラスではポーリングやタイムアウト指定はサポートしない。

  テンプレート引数LockObj には、semaphoremutex 、またはcpulock 等を指定することができる。LockObjvoid を指定した場合には、 実際にはクリティカルセクションが生成されない。

  テンプレート引数Sensekernel は、クリティカルセクションを生成するにあたり、 予めカーネルの動作状態をvsns_ini によって参照するかどうかを指定することができる。 SenseKerneltrue であればカーネル動作状態が参照される。

注意:
デフォルトではSenseKernelfalse になっているため、 カーネルが動作している必要がある。
参照:
lock