#pragma once #include "constdef.h" // sql语句缓存队列 class QueueStrManager { typedef DWORD (WINAPI *PFCALLBACK)(const char* lparam); private: char* m_chr; // 需要执行的语句 int m_couter; // int m_length; // 长度 int m_max_couter; // 最大字符数 int m_max_length; // 最大长度 ULONGLONG m_last_exec_time; // 最后一次执行时间,如果长时间没有新的语句产生,可根据时间执行缓存的数据。 PFCALLBACK m_pfunc; // 回调方法 CRITICAL_SECTION m_csQueueList; // 锁 public: QueueStrManager(void); QueueStrManager(int c, int l, PFCALLBACK func ): m_max_couter(c), m_max_length(l), m_couter(0), m_length(0), m_pfunc(func), m_last_exec_time(::GetCurrentTime()) { m_chr = new char[m_max_length]; InitializeCriticalSectionAndSpinCount(&m_csQueueList, MAXCRITICALSECTIONSPINCOUNT); }; ~QueueStrManager(void); void AddString(const char * chr); void Execute(bool bExit = true); };