#pragma once #include namespace f8 { typedef std::vector> DataSet; typedef void (*AsyncDBOnOkFunc)(a8::XParams& param, const DataSet* data_set); typedef void (*AsyncDBOnErrorFunc)(a8::XParams& param, int error_code, const std::string& error_msg); class DBPoolImpl; class DBPool : public a8::Singleton { private: DBPool() {}; friend class a8::Singleton; public: AsyncDBOnErrorFunc on_dberror = nullptr; std::atomic total_query_num = {0}; std::atomic exec_query_num = {0}; std::atomic run_loop_num = {0}; public: void Init(); void UnInit(); void SetThreadNum(int thread_num); //执行异步并行查询 void ExecAsyncQuery(a8::XObject conn_info, const char* querystr, std::vector args, a8::XParams param, AsyncDBOnOkFunc on_ok, AsyncDBOnErrorFunc on_error, long long hash_code); //执行异步并行sql void ExecAsyncScript(a8::XObject conn_info, const char* querystr, std::vector args, a8::XParams param, AsyncDBOnOkFunc on_ok, AsyncDBOnErrorFunc on_error, long long hash_code); private: DBPoolImpl* impl_ = nullptr; }; }