使用数组保存
来源:互联网 发布:21天学通c语言 pdf 编辑:程序博客网 时间:2024/06/05 00:12
template<class T,unsigned int ArrayNum=3>//用3个数组,替代锁
class CCircleQueue
{
public:
CCircleQueue()
{
m_nUsePos = 0;
}
////切换资源结束
void SwitchSourceEnd()
{
if (m_nUsePos+1 == ArrayNum)
{ //是最后一个下标
m_nUsePos = 0;
}
else
{
++m_nUsePos;
}
}
//切换资源开始
T* SwitchSourceBeg()
{
if (m_nUsePos + 1 == ArrayNum)//2
{
return m_pData;//m_pData[0]
}
else
{
return m_pData + (m_nUsePos + 1)%ArrayNum;//m_pData[1],m_pData[2]
}
}
//获得切换前的资源
T* GetIdleSource()
{
if (m_nUsePos>0)
{
return m_pData+(m_nUsePos-1)%ArrayNum;
}
else
{
return m_pData + ArrayNum - 1; //取最后一个数据
}
}
//获得当前可用资源
T* GetUseSource()
{
return m_pData+m_nUsePos%ArrayNum;
}
void UpdateSource(const T& refSource)
{
*SwitchSourceBeg() = refSource;
SwitchSourceEnd();
}
unsigned int GetQueueSize()
{
return ArrayNum;
}
protected:
unsigned char m_nUsePos;
T m_pData[ArrayNum];
};
class CCircleQueue
{
public:
CCircleQueue()
{
m_nUsePos = 0;
}
////切换资源结束
void SwitchSourceEnd()
{
if (m_nUsePos+1 == ArrayNum)
{ //是最后一个下标
m_nUsePos = 0;
}
else
{
++m_nUsePos;
}
}
//切换资源开始
T* SwitchSourceBeg()
{
if (m_nUsePos + 1 == ArrayNum)//2
{
return m_pData;//m_pData[0]
}
else
{
return m_pData + (m_nUsePos + 1)%ArrayNum;//m_pData[1],m_pData[2]
}
}
//获得切换前的资源
T* GetIdleSource()
{
if (m_nUsePos>0)
{
return m_pData+(m_nUsePos-1)%ArrayNum;
}
else
{
return m_pData + ArrayNum - 1; //取最后一个数据
}
}
//获得当前可用资源
T* GetUseSource()
{
return m_pData+m_nUsePos%ArrayNum;
}
void UpdateSource(const T& refSource)
{
*SwitchSourceBeg() = refSource;
SwitchSourceEnd();
}
unsigned int GetQueueSize()
{
return ArrayNum;
}
protected:
unsigned char m_nUsePos;
T m_pData[ArrayNum];
};
阅读全文
0 0
- 使用数组保存
- Android使用SharedPreferences保存数组
- C#项目使用Properties.Settings保存数组
- 为什么使用字符数组保存密码比使用String保存密码更好?
- 为什么使用字符数组保存密码比使用String保存密码更好?
- 数组保存到文件
- TTreeView 里保存数组
- session保存数组内容
- php cookie保存数组
- Python Numpy数组保存
- SharedPreferences 保存字符串数组
- Python Numpy数组保存
- Python Numpy数组保存
- SharedPreferences保存数组
- Python Numpy数组保存
- SharedPreferences保存数组
- 保存Numpy数组
- Python Numpy数组保存
- Mybatis SqlSessionTemplate 源码解析
- vim括号匹配等跳转技巧
- okhttp单项验证
- mysql常用
- 聊聊同步、异步和回调
- 使用数组保存
- css的ie6兼容问题
- css杂记一
- Pell数列
- 《DOM编程艺术》二、javascript图片库
- js import和require用法的区别
- 《DOM编程艺术》六、充实文档内容
- 《DOM编程艺术》三、最佳实践
- java将图片转化为base64和base64转化为图片编码并保存在本地;以及android转base64编码