QueueStrManager.h 891 B

12345678910111213141516171819202122232425262728293031323334
  1. #pragma once
  2. #include "constdef.h"
  3. // sql语句缓存队列
  4. class QueueStrManager
  5. {
  6. typedef DWORD (WINAPI *PFCALLBACK)(const char* lparam);
  7. private:
  8. char* m_chr; // 需要执行的语句
  9. int m_couter; //
  10. int m_length; // 长度
  11. int m_max_couter; // 最大字符数
  12. int m_max_length; // 最大长度
  13. ULONGLONG m_last_exec_time; // 最后一次执行时间,如果长时间没有新的语句产生,可根据时间执行缓存的数据。
  14. PFCALLBACK m_pfunc; // 回调方法
  15. CRITICAL_SECTION m_csQueueList; // 锁
  16. public:
  17. QueueStrManager(void);
  18. QueueStrManager(int c, int l, PFCALLBACK func ):
  19. m_max_couter(c),
  20. m_max_length(l),
  21. m_couter(0),
  22. m_length(0),
  23. m_pfunc(func),
  24. m_last_exec_time(::GetCurrentTime())
  25. {
  26. m_chr = new char[m_max_length];
  27. InitializeCriticalSectionAndSpinCount(&m_csQueueList, MAXCRITICALSECTIONSPINCOUNT);
  28. };
  29. ~QueueStrManager(void);
  30. void AddString(const char * chr);
  31. void Execute(bool bExit = true);
  32. };