#include #include #include #include class ConnectionPool { public: ConnectionPool(size_t poolSize) : maxPoolSize(poolSize) { for (size_t i = 0; i < maxPoolSize; ++i) { connections.push(new Database()); } } ~ConnectionPool() { while (!connections.empty()) { delete connections.front(); connections.pop(); } } Database* getConnection() { std::unique_lock lock(mutex); while (connections.empty()) { condition.wait(lock); } Database* conn = connections.front(); connections.pop(); std::cout << "Pool " << __func__ << " ok" << std::endl; return conn; } void returnConnection(Database* conn) { std::unique_lock lock(mutex); connections.push(conn); condition.notify_one(); std::cout << "Pool " << __func__ << " ok" << std::endl; } private: std::queue connections; // 连接队列 size_t maxPoolSize; // 最大连接池大小 std::mutex mutex; // 互斥锁 std::condition_variable condition; // 条件变量 };