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等。的主要内容,如果未能解决你的问题,请参考以下文章
专门用于小型数据且几乎没有写入的嵌入式数据库?
c_cpp C ++中的小型多态系统
c_cpp 带有putc打印的小型trie框架
如何在 Java 应用程序中设置 H2 嵌入式数据库以在小型网络中使用?
当前主流的小型嵌入式GUI有哪些?
如何制作一个嵌入 H2 的演示 JHipster 用于“生产”