


using namespace std;
/*
* 数据库连接池: 单例模式
* MySqlConn 是一个连接MySQL数据库的类
*/
class ConnectionPool
{
public:
// 得到单例对象
static ConnectionPool* getConnectPool();
// 从连接池中取出一个连接
shared_ptr<MySqlConn> getConnection();
// 删除拷贝构造和拷贝赋值运算符重载函数
ConnectionPool(const ConnectionPool& obj) = delete;
ConnectionPool& operator=(const ConnectionPool& obj) = delete;
private:
// 构造函数私有化
ConnectionPool();
bool parseJsonFile();
void produceConnection();
void recycleConnection();
void addConnection();
string m_ip; // 数据库服务器ip地址
string m_user; // 数据库服务器用户名
string m_dbName; // 数据库服务器的数据库名
string m_passwd; // 数据库服务器密码
unsigned short m_port; // 数据库服务器绑定的端口
int m_minSize; // 连接池维护的最小连接数
int m_maxSize; // 连接池维护的最大连接数
int m_maxIdleTime; // 连接池中连接的最大空闲时长
int m_timeout; // 连接池获取连接的超时时长
queue<MySqlConn*> m_connectionQ;
mutex m_mutexQ;
condition_variable m_cond;
};
1、爱编程的大丙