c_cpp 用于嵌入式程序的小型RingQueue(例如Arduino,AVR,mbed等。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 用于嵌入式程序的小型RingQueue(例如Arduino,AVR,mbed等。相关的知识,希望对你有一定的参考价值。
#ifndef __RINGQUEUE_H__
#define __RINGQUEUE_H__
#define DEFAULT_MAX_SIZE 16
template<typename T>
class RingQueue
{
public:
RingQueue(unsigned int size = DEFAULT_MAX_SIZE)
: mMaxSize(size)
{
mHead = mTail = 0;
mQueue = new T[mMaxSize];
};
~RingQueue() { delete[] mQueue; };
int size() { return (mTail-mHead); };
bool empty() { return !(mTail-mHead); };
void clear() { mHead = 0; mTail = 0; };
void pop() { mHead++; };
void push(T data)
{
mQueue[(mTail++)%mMaxSize] = data;
if (size() >= mMaxSize) mHead++;
else if (size() < 0) clear();
};
T& front()
{
return *(empty() ? NULL : mQueue+mHead%mMaxSize);
};
T& back()
{
return *(empty() ? NULL : mQueue+(mTail-1)%mMaxSize);
}
private:
volatile unsigned int mHead;
volatile unsigned int mTail;
const unsigned int mMaxSize;
T* mQueue;
};
#endif // __RINGQUEUE_H__
以上是关于c_cpp 用于嵌入式程序的小型RingQueue(例如Arduino,AVR,mbed等。的主要内容,如果未能解决你的问题,请参考以下文章