实战C++手写线程池

server/2024/9/29 3:07:21/

课程总目录


文章目录

  • 一、项目必备基础概念
    • 1.1 并发和并行
    • 1.2 多线程的优势
    • 1.3 线程的消耗
    • 1.4 线程池的优势
    • 1.5 线程池的两种模式:fixed模式和cached模式
    • 1.6 线程同步之线程互斥
    • 1.7 线程同步之线程通信
      • 1.7.1 条件变量
      • 1.7.2 信号量
    • 1.8 项目设计图浏览
  • 二、线程池代码展示
  • 三、线程池资源回收死锁问题分析
  • 四、线程资源回收策略修改优化
  • 五、Linux平台编译线程池动态库
  • 六、packaged_task和future机制


一、项目必备基础概念

作为五大池(内存池、连接池、线程池、进程池、协程池)之一,线程池的应用非常广泛,不管是客户端程序,还是后台服务程序,都是提高业务处理能力的必备模块。有很多开源的线程池实现,虽然各自接口使用上稍有区别,但是其核心实现原理都是基本相同的。

1.1 并发和并行

  • CPU单核
  • CPU多核、多CPU

并发:单核上,多个线程占用不同的CPU时间片,物理上还是串行执行的,但是由于每个线程占用的CPU时间片非常短(比如10ms),看起来就像是多个线程都在共同执行一样,这样的场景称作并发(concurrent)

并行:在多核上或者多CPU上,多个线程是在真正的同时执行,这样的场景称作并行(parallel)

1.2 多线程的优势

首先我们要认识到一个问题


http://www.ppmy.cn/server/123288.html

相关文章

PyQt5 statusbar 放图片并设置图片大小和左右间距

在 PyQt5 中,状态栏(QStatusBar)通常用于显示窗口的状态信息或提示。虽然 PyQt5 的 QStatusBar 没有直接提供设置图片作为状态栏项(QStatusBarItem)的 API,但你可以通过添加一个 QWidget(如 QLa…

长列表加载性能优化

一、长列表优化概述 列表是应用开发中最常见的一类开发场景,它可以将杂乱的信息整理成有规律、易于理解和操作的形式,便于用户查找和获取所需要的信息。应用程序中常见的列表场景有新闻列表、购物车列表、各类排行榜等。随着信息数据的累积,特…

WPF入门教学十八 动画入门

WPF(Windows Presentation Foundation)是微软推出的一种用于创建Windows客户端应用程序的用户界面框架。WPF 提供了丰富的动画支持,可以通过XAML或者代码来实现各种动画效果。以下是一个简单的WPF动画入门教学,我们将使用XAML来创…

Angular面试题八

一、请解释Angular中的AOT编译是什么,并简述其优势。 Angular中的AOT编译,全称为Ahead-of-Time(预先编译),是一种在构建过程中将Angular应用程序的模板和组件编译成本地机器代码(通常是JavaScript代码&…

Spring Boot入门指南

前言 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。本文将详细介绍 Spring Boot 的基本概念、环境搭建、第一…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【Perf调测】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 基本概念 Perf为性能分析工具,依赖PMU(Per…

学Python再学C++是走弯路?

随着编程教育的普及,越来越多的家长和学生开始选择学习编程语言。Python作为一种简洁易学、应用广泛的编程语言,成为许多编程初学者的首选。然而,随着学习的深入,很多人会考虑转向更复杂、更底层的语言,如C。这就引发了…

面试加分必看,11道接口安全测试面试题!

今天,分享一些在面试中可能会遇到的接口安全测试面试问题,助你在面试中从容不迫。 01.HTTPS 与 HTTP 的区别? 02.OSI七层模型是指? 03.你所知道的 HTTP 状态码? 04.你知道SQL注入吗? 05.SQL 注入与XSS…