1 // TwoBufQueue.h: interface for the CTwoBufQueue class. 2 // 3 ////////////////////////////////////////////////////////////////////// 4 5 #if !defined(AFX_TWOBUFQUEUE_H__EA19608F_9562_4803_95C4_5C4A574CC928__INCLUDED_) 6 #define AFX_TWOBUFQUEUE_H__EA19608F_9562_4803_95C4_5C4A574CC928__INCLUDED_ 7 8 #if _MSC_VER > 1000 9 #pragma once 10 #endif // _MSC_VER > 1000 11 #include "BufQueue.h" 12 13 // 双缓存队列,减少读写操作的互斥碰撞,向无锁算法靠近,乒乓存储原理 14 15 /* 16 1)对于读写双方读写操作你比较频繁,双方的的瞬时吞吐量存在差异,可以很好的利用缓存空间特性提读写效率。 17 18 2)消费数据的速度总是大于生产数据的的速度,本数据结构与单缓存队列无异。 19 20 3)可以减少了读写互斥消耗,同时读,同时写互斥仍存在。 21 */ 22 23 class CTwoBufQueue 24 { 25 public: 26 int GetdataSize(); 27 int Write(const char *pBuf, int writeBytes); 28 int Read(char *pBuf, int readBytes); 29 CTwoBufQueue(); 30 virtual ~CTwoBufQueue(); 31 private: 32 void private_SwitchPointer(); 33 CBufQueue m_Queue_A; 34 CBufQueue m_Queue_B; 35 CBufQueue *m_pRead_Q; 36 CBufQueue *m_pWrite_Q; 37 CCritcalS m_critcal; 38 }; 39 40 #endif // !defined(AFX_TWOBUFQUEUE_H__EA19608F_9562_4803_95C4_5C4A574CC928__INCLUDED_)
相关文章: