リードライトロックを実装しています。複数のスレッドが同時にデータを読み、単一のスレッドがデータを書きこむ場合に利用します。
[詳解]
#include "nn/nlib/threading/SharedCriticalSection.h"
|
constexpr | SharedCriticalSection () noexcept |
| デフォルトコンストラクタです。
|
|
void | lock_shared () noexcept NLIB_SHARED_LOCK_FUNC() |
| 読み込みロックを取得しクリティカルセクションに入ります。取得できるまでブロックします。
|
|
bool | try_lock_shared () noexcept NLIB_SHARED_TRYLOCK_FUNC(true) |
| 読み込みロックを取得しクリティカルセクションに入ることを試みます。 [詳解]
|
|
bool | try_lock_shared_for (const TimeSpan &timeout) noexcept NLIB_SHARED_TRYLOCK_FUNC(true) |
| 読み込みロックを取得しクリティカルセクションに入ることを試みます。タイムアウトします。 [詳解]
|
|
bool | try_lock_shared_until (const DateTime &abstime) noexcept NLIB_SHARED_TRYLOCK_FUNC(true) |
| 読み込みロックを取得しクリティカルセクションに入ることを試みます。タイムアウトします。 [詳解]
|
|
void | unlock_shared () noexcept NLIB_SHARED_UNLOCK_FUNC() |
| 読み込みロックを解放します。
|
|
void | lock () noexcept NLIB_LOCK_FUNC() |
| 書き込みロックを取得しクリティカルセクションに入ります。取得できるまでブロックします。
|
|
bool | try_lock () noexcept NLIB_TRYLOCK_FUNC(true) |
| 書き込みロックを取得しクリティカルセクションに入ることを試みます。 [詳解]
|
|
bool | try_lock_for (const TimeSpan &timeout) noexcept NLIB_TRYLOCK_FUNC(true) |
| 書き込みロックを取得しクリティカルセクションに入ることを試みます。タイムアウトします。 [詳解]
|
|
bool | try_lock_until (const DateTime &abstime) noexcept NLIB_TRYLOCK_FUNC(true) |
| 書き込みロックを取得しクリティカルセクションに入ることを試みます。タイムアウトします。 [詳解]
|
|
void | unlock () noexcept NLIB_UNLOCK_FUNC() |
| 書き込みロックを解放します。
|
|
リードライトロックを実装しています。複数のスレッドが同時にデータを読み、単一のスレッドがデータを書きこむ場合に利用します。
- 説明
- 読み込みスレッド同士は排他する必要がない場合、単純な
CriticalSection
を使うより並列性が高くなります。
- 典型的には以下のようなコードを記述することになります。
m.lock_shared();
.....
m.unlock_shared();
.....
m.lock();
.....
m.unlock();
SharedCriticalSection.h の 12 行目に定義があります。
nn::nlib::threading::SharedCriticalSection::try_lock |
( |
| ) |
|
|
inlinenoexcept |
nn::nlib::threading::SharedCriticalSection::try_lock_for |
( |
const TimeSpan & |
timeout | ) |
|
|
inlinenoexcept |
nn::nlib::threading::SharedCriticalSection::try_lock_shared |
( |
| ) |
|
|
inlinenoexcept |
nn::nlib::threading::SharedCriticalSection::try_lock_shared_for |
( |
const TimeSpan & |
timeout | ) |
|
|
inlinenoexcept |
nn::nlib::threading::SharedCriticalSection::try_lock_shared_until |
( |
const DateTime & |
abstime | ) |
|
|
inlinenoexcept |
nn::nlib::threading::SharedCriticalSection::try_lock_until |
( |
const DateTime & |
abstime | ) |
|
|
inlinenoexcept |
このクラス詳解は次のファイルから抽出されました: