57 virtual size_t AddElements(
size_t size,
const TYP* P = NULL) = 0;
67 virtual INDEX
Add(
const TYP& t) = 0;
92 ASSERT0(
false,
"IQueue::Take()",
"キューが空の時取得操作されました。" );
158template<
typename TYP,
bool ISI = false,
class INV = TYP>
213 virtual bool Lock(DWORD dwTime = INFINITE)
const
215 return m_syncFunc.
Lock();
277 virtual INDEX
Add(
const TYP& t)
280 return (
AddElements(1, &t) == 1) ? r : INVALID_INDEX;
300 loop ( i, sz -index - 1 )
302 INDEX dst = (ri + i + index) % bs;
303 INDEX src = (ri + i + index + 1) % bs;
308 INDEX dst = (ri + sz - 1) % bs;
405 if ( P != NULL || ISI )
475 void m_Separate(
void)
487 while ( (size--) > 0 )
502 virtual const TYP* m_GetConstPointer(INDEX index)
const
508 tmp = (H->readIndex) + index;
509 tmp %= (H->bufferSize);
510 return &(H->pBuffer[tmp]);
521 virtual TYP* m_GetPointer(INDEX index)
528 tmp = (H->readIndex) + index;
529 tmp %= (H->bufferSize);
530 return &(H->pBuffer[tmp]);
557template<
typename TYP,
bool ISI = false,
class INV = TYP>
#define loop(VAR, CNT)
loop構文.
virtual ~CBlockingQueueT(void)
デストラクタ
CBlockingQueueT(size_t size=10000)
コンストラクタ
virtual size_t TakeElements(size_t size, TYP *P=NULL)
[取得] 複数要素取り出し.
virtual size_t AddElements(size_t size, const TYP *P=NULL)
[追加] 複数要素追加.
int GetReferCount(void) const
[取得] 参照数取得.
TYP * ReferP(void)
[取得] TYPのポインタ取得.
virtual size_t GetSize(void) const
[取得] 要素数取得
friend class CQueueTest
フレンドクラス宣言
void SetQueueSize(size_t size)
[設定] リングキューサイズ指定.
CRingQueueT(size_t size=10000)
コンストラクタ
virtual bool Remove(INDEX index)
[削除] 要素一つ削除.
CRingQueueT(const CRingQueueT &queue)
コピーコンストラクタ
virtual bool Lock(DWORD dwTime=INFINITE) const
[排他] ロック
CRingQueueT & operator=(const CRingQueueT &other)
[代入] コピーオペレータ
bool IsFull(void) const
[確認] 満タン?
virtual size_t TakeElements(size_t size, TYP *P=NULL)
[取得] 複数要素取り出し.
virtual bool RemoveAll(void)
[削除] データ全削除.
virtual size_t AddElements(size_t size, const TYP *P=NULL)
[追加] 複数要素追加.
size_t GetFreeSize(void) const
[取得] 格納可能数取得.
virtual INDEX Add(const TYP &t)
[追加] 要素追加.
CPointerHandleT< THead > m_hptHead
管理用ヘッダのポインタハンドル
virtual void Unlock(void) const
[排他] アンロック
virtual ~CRingQueueT(void)
デストラクタ
size_t GetQueueSize(void) const
[取得] リングキューサイズ取得.
virtual bool Lock(DWORD dwTime=INFINITE) const
[排他] ロック
virtual void Unlock(void) const
[排他] アンロック
TYP * GetBuffer(size_t size=0)
[操作] データアドレス取得
void ReleaseBuffer(void)
[操作] データの管理を元に戻す.
void Invalid(void)
[操作] 無効状態にする
TNB::CRingQueueT< CString, true > CStringQueue
CString型キュー管理クラス
TNB::CBlockingQueueT< CStr, true > CStrBlockingQueue
CStr型ブロッキングキュー管理クラス
TNB::CRingQueueT< BYTE > CByteQueue
BYTE型(unsigned 8bit)キュークラス
TNB::CBlockingQueueT< BYTE > CByteBlockingQueue
BYTE型(unsigned 8bit)ブロッキングキュークラス
TNB::CRingQueueT< DWORD > CDwordQueue
DWORD型(unsigned 32bit)キュー管理クラス
TNB::CRingQueueT< CStr, true > CStrQueue
CStr型キュー管理クラス
#define EXCLUSIVE(CLS)
簡易排他制御マクロ.
THead(size_t size)
コンストラクタ
CSyncEvent syncTaking
Takeした時一時的にUnlockされる(CBlockingQueueT用)
CSyncEvent syncAdding
Addした時一時的にUnlockされる(CBlockingQueueT用)
bool IsInRange(INDEX index) const
[確認] INDEXの有効確認.
virtual size_t AddElements(size_t size, const TYP *P=NULL)=0
[追加] 複数要素追加.
virtual ~IQueueT(void)
デストラクタ
virtual size_t EraseElements(size_t size)
[削除] 要素削除.
virtual INDEX Add(const TYP &t)=0
[追加] 要素一つ追加.
CVectorT< TYP > TakeoutToVector(size_t size)
[取得] 要素配列取出し.
virtual TYP Take(void)
[取得] 先頭要素取り出し.
virtual size_t TakeElements(size_t size, TYP *P=NULL)=0
[取得] 複数要素取り出し