nlib
|
ロックフリーな優先度つきキューを実装したクラスで、nlib_mq
をラップしています。
[詳解]
#include "nn/nlib/LockFree.h"
公開型 | |
typedef UniquePtr< T, DestructorForLockFree< T > > | DequeueType |
Dequeue() の引数となる型です [詳解] | |
公開メンバ関数 | |
errno_t | Close () noexcept |
キューをクローズし初期化前の状態にします。スレッドセーフではありません。 [詳解] | |
errno_t | Enqueue (T *obj, int prio) noexcept |
キューに要素を追加します。スレッドセーフです。 [詳解] | |
errno_t | Dequeue (DequeueType &obj, int *prio) noexcept |
キューから要素を取り出します。スレッドセーフです。 [詳解] | |
void | SwapUnsafe (LockFreePriorityQueue &rhs) noexcept |
オブジェクトをスワップします。スレッドセーフではありません。 | |
コンストラクタ、デストラクタ、及び初期化 | |
LockFreePriorityQueue () noexcept | |
デフォルトコンストラクタです。 | |
~LockFreePriorityQueue () noexcept | |
デストラクタです。 [詳解] | |
errno_t | Init (size_t max_size) noexcept |
キューを初期化します。スレッドセーフではありません。 [詳解] | |
ロックフリーな優先度つきキューを実装したクラスで、nlib_mq
をラップしています。
T | キューの要素の型です。 |
DestructorForLockFree<T>
を特殊化して、要素型T
を解体するコードを記述する必要があります。 また、Dequeue()
の実行中にEnqueue()
が実行された場合、Dequeue()
が最高優先度の要素を返さない場合があります。 kNumThread
個のスレッドからタスクが送信され、kNumThread
個のスレッドで受信しますが、キューに存在する優先度の高いタスクから受信します。 LockFree.h の 622 行目に定義があります。
nn::nlib::LockFreePriorityQueue< T >::DequeueType |
Dequeue()
の引数となる型です
DestructorForLockFree
で自動的にデストラクトされるようにUniquePtr
がtypedefされています。 LockFree.h の 624 行目に定義があります。
|
inlinenoexcept |
デストラクタです。
DestructorForLockFree
を利用して削除します。 必要な場合は関数テンプレートを特殊化して必要な処理を実行してください。 LockFree.h の 626 行目に定義があります。
|
inlinenoexcept |
キューをクローズし初期化前の状態にします。スレッドセーフではありません。
DestructorForLockFree<T>
によりデストラクトされます。 LockFree.h の 641 行目に定義があります。
|
inlinenoexcept |
キューから要素を取り出します。スレッドセーフです。
[out] | obj | キューから取り出されたオブジェクト |
[out] | prio | obj の優先度 |
nlib_mq_receive()
が返す値 LockFree.h の 651 行目に定義があります。
|
inlinenoexcept |
キューに要素を追加します。スレッドセーフです。
[in] | obj | 要素へのポインタ |
[in] | prio | 0以上31以下の優先度 |
nlib_mq_send()
が返す値 LockFree.h の 647 行目に定義があります。
|
inlinenoexcept |
キューを初期化します。スレッドセーフではありません。
[in] | max_size | キューに格納できる要素の最大数 |
0 | 成功した場合 |
EINVAL | max_size がINT32_MAX を超えている場合 |
EALREADY | 既に初期化済みの場合 |
その他 | nlib_mq_open() が返すエラー |
LockFree.h の 630 行目に定義があります。
© Nintendo Co., Ltd. All rights reserved.