C++多线程之旅实战-线程池的理解

本文探讨了线程池的概念,通过会议室分配的例子来类比线程池的工作方式。文章介绍了如何设计线程池,包括确定工作线程数量、线程执行任务的流程,以及解决线程间竞争的策略。最后,作者强调理解线程池原理对于开发者的重要性,特别是面试中的相关问题。
摘要由CSDN通过智能技术生成

前言

在很多公司小组都需要使用会议室进行讨论,但是每个小组都配备一个会议室又会很浪费。所以就将所有的会议室都拿出来放到一起,那个小组需要就像行政部门申请即可,根据申请的先后顺序使用会议室。使用完成以后自动归还,无需派专人进行管理。

基于这一思路,我们也可以把线程资源放到一个区域,然后根据每个用户的需求分配线程资源。并且还可以实现自动化的线程资源分配。

设计线程池有几个关键的问题:第一,线程中应该创建几个工作线程;第二,是否应该等待线程执行结束…

第一个线程

在这里插入图片描述
submit不断提交任务,然后threads获取其中任务然后执行。这就是线程池的主要执行原理。

#include <thread>
#include <atomic>
#include <queue>
#include <vector>
#include <iostream>
class join_threads
{
   
    std::vector<std::thread> &threads;
public:
    explicit join_threads(std::vector<std::thread> &threads_):threads(threads_){
   }
    ~join_threads()
    {
   
        for(unsigned long i = 0 ; i < threads.size();++i)
        {
   
            if(threads[i].joinable())
                threads[i].join();
        
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值