04.webserver源码阅读--sqlConnPool

00.webserver源码阅读--buffer - DavidJIAN - 博客园 (cnblogs.com)

01.webserver源码阅读--BlockQueue - DavidJIAN - 博客园 (cnblogs.com)

02.webserver源码阅读--log - DavidJIAN - 博客园 (cnblogs.com)

03.webserver源码阅读--threadPool - DavidJIAN - 博客园 (cnblogs.com)

sqlConnPool

MySQL数据库连接池。单例模式。底层存储为queue,通过信号量和互斥量进行入队和出队。

成员变量

  • max_conn
    • 数据库连接池最大连接数
  • use_count
    • 已经使用的连接数
  • free_count
    • 空闲的连接数
  • conn_q
    • 装有MYSQL*的队列
  • m_mutex
    • 互斥变量
  • m_sem
    • 信号量

成员函数

  • 构造函数
    • 初始化
  • 析构函数
    • 调用close_pool函数
  • get_instance
    • 单例模式常见函数,不解释
  • get_conn
    • 通过m_sem进行同步,通过m_mutex上锁,从队列获取连接
  • free_conn
    • 用完连接,重新将连接放入队列。
  • free_conn_num
    • 返回可用连接数,其实就是队列中现有元素个数
  • init
    • 创建连接,放入队列
    • 初始化信号量m_sem,初值为最大连接数
  • close_pool
    • 关闭队列中的所有连接
posted @ 2023-01-08 11:42  DavidJIAN  阅读(18)  评论(0)    收藏  举报