CTR NEX API Reference
nn::nex::CriticalSection クラス

クリティカルセクションクラスです。 [詳解]

#include <OnlineCore/src/Platform/Core/CriticalSection.h>

+ nn::nex::CriticalSection の継承関係図

公開メンバ関数

 CriticalSection ()
 コンストラクタです。
 
virtual ~CriticalSection ()
 デストラクタです。
 
virtual void Enter ()
 クリティカルセクションに入ります。 [詳解]
 
virtual void Leave ()
 クリティカルセクションを出ます。 [詳解]
 
virtual qBool TryEnter ()
 クリティカルセクションに入るのを試みます。 [詳解]
 

静的公開メンバ関数

static qBool GetEnableDetectRaceCondition ()
 スレッド競合をチェックする機能が有効かどうかを取得します。 [詳解]
 
static void SetEnableDetectRaceCondition (qBool enable)
 スレッド競合をチェックする機能を無効化/有効化します。 [詳解]
 

詳解

クリティカルセクションクラスです。

このクラスは、 Enter() および Leave() の呼び出し区間で、一つのスレッドのみが処理を行うことを保証します。 誤って CriticalSection を永久的にロックすることを避けるため、 ScopedCS クラスを使用することができます。

スレッドセーフなスレッドモードを使用している場合のみ CriticalSection が有効になります。 スレッドセーフでないスレッドモードを使用している場合は CriticalSection::Enter() は何も行いません。

Scheduler::SystemLock() で取得した CriticalSection を使用すると NEX の内部処理を一時停止でき、 その間システムの変更が発生しないことを保証できます。

参照
ScopedCS

関数詳解

virtual void nn::nex::CriticalSection::Enter ( )
virtual

クリティカルセクションに入ります。

このメソッドを呼び出すスレッドは、 Leave() を呼び出すまでクリティカルセクションを所有します。 すでに他のスレッドがクリティカルセクションに入っている場合はそのスレッドがクリティカルセクションを出るまで 現在のスレッドがブロックします。

参照
ScopedCS::ScopedCS
virtual qBool nn::nex::CriticalSection::TryEnter ( )
virtual

クリティカルセクションに入るのを試みます。

他のスレッドがすでにクリティカルセクションを所有していない場合にクリティカルセクションに入ります。 このメソッドを呼び出すスレッドは、 Leave() を呼び出すまでクリティカルセクションを所有します。 すでに他のスレッドがクリティカルセクションに入っている場合は 本関数は即座に false を返し、クリティカルセクションに入りません。 スレッドセーフでないスレッドモードを使用している場合は常に true を返します。


戻り値一覧:

true クリティカルセクションへ入れた。

false クリティカルセクションへ入れなかった。

virtual void nn::nex::CriticalSection::Leave ( )
virtual

クリティカルセクションを出ます。

Enter() および Leave() への呼び出し間で、状態変更が発生しないことが保証されています。

参照
ScopedCS::~ScopedCS
static void nn::nex::CriticalSection::SetEnableDetectRaceCondition ( qBool  enable)
static

スレッド競合をチェックする機能を無効化/有効化します。

Debug 及び Develop ビルドでは NEX のスレッドモードがスレッドアンセーフとして設定されている場合に、 アプリケーションが NEX の API を並列に呼び出していないかをチェックしています。 この関数ではその機能を一時的に無効化/有効化します。 この機能を無効化するのは非常に危険です。テスト目的でのみ機能を無効化できます。

引数
[in]enabletrue を指定すると機能を有効化し、false を指定すると無効化します。
static qBool nn::nex::CriticalSection::GetEnableDetectRaceCondition ( )
static

スレッド競合をチェックする機能が有効かどうかを取得します。

戻り値
スレッド競合をチェックする機能が有効かどうか。