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