随笔 复习 连接池 线程池

发布时间 2023-11-13 15:06:28作者: 大橘|博客
连接池实现思路
class ConnectPool
{
public:
    ConnectPool(int number)
    {
        for(int i=0;i<=number;i++)
        {
       int fd = socket();	// 创建通信的fd
            conect();			// 连接服务器
            m_list.push(fd);//往容器中存储 链接            
        }
        
    }
    //提取
    int getConnect()
    {
       if(m_list.size()>0)
       {
           int fd=m_list.head();
            m_list.pop();
            return fd;
       }
        return -1;
        
    }
    //放回
    void putConnect(int fd,bool isvaild)
    {
        m_list.push(fd);   
    }  
    ~ConnectPool();
private:
    queue<int> m_list;

}

线程池

线程池

优点:

可以回收用完的线程
不需要重复频繁的创建销毁线程

根本:多个线程的一个集合, 可以回收用完的线程

设计思路

管理者->1
工作者->N个

管理者
检测工作线程是否多或少 以及状态

工作者
处理业务逻辑

需要任务队列

存储任务->唤醒阻塞->条件变量
分发任务 没有任务阻塞

线程个数 ->业务逻辑
密集型 需要很多cpu时间 线程个数=当前电脑的核心数
IO操作

线程个数=2倍核心cpu数
代码核心

逻辑图