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_)
CTwoBufQueue_H

相关文章:

  • 2021-07-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-26
  • 2022-01-22
  • 2021-07-05
  • 2021-11-26
相关资源
相似解决方案