2024-05-29 服务器开发-c++线程池与task-思考

摘要:

无论是什么系统,线程池和task都是给上层所提供的基础的功能单元。本文记录一些核心的设计思想。

线程池要面对的场景:

  1. 调用下层接口时,被IO阻塞,导致整个服务无法对外提供服务
  2. 更上层调用本模块接口时,是需要做到同步,导致阻塞了调用的线程。但是上层的模块,使用了新的线程,继续调用本同步的接口,需要能并发的访问,也就是不受上个阻塞线程的影响。

线程池与task:

  1. 创建多个线程,这些线程开始一同执行
  2. 要被线程执行的操作,被封装到task的数据结构里
  3. task的列表,是全局可见的,是处于临界区,所以需要枷锁。每次从task列表中拿出一个task,交给一个线程去处理。
  4. 线程处理完task,通过回调函数,对外告知结果,来和调用模块进行交互。
  5. 其实可以理解成生产者消费者模型。线程模型当作工作组。

设计:

UML类图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/659577.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebGL实现医学教学软件

使用WebGL实现医学教学软件是一个复杂但非常有益的项目,可以显著提升医学教育的互动性和效果。以下是详细的实现步骤,包括需求分析、技术选型、开发流程和注意事项。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作…

[NLP]如何训练自己的大型语言模型

简介 大型语言模型,如OpenAI的GPT-4或Google的PaLM,已经席卷了人工智能领域。然而,大多数公司目前没有能力训练这些模型,并且完全依赖于只有少数几家大型科技公司提供技术支持。 在Replit,我们投入了大量资源来建立从…

2024长三角快递物流展即将亮相,致鸿物流器材有限公司值得关注

广东致鸿物流器材有限公司,前身为广州致鸿物流器材有限公司,成立于2002年初,是一家中国专业仓储笼研发制造公司,公司员工约400名,日产仓储笼制造规模近8000个,在全国范围内有五大配送服务中心:江…

降雨量应急监测站的工作原理

TH-YJ3】雨量监测站是一种自动化的气象监测设备,主要用于实时、准确地监测和记录降雨量数据。它通过安装在特定位置的传感器和数据处理设备,连续监测降雨的强度、持续时间和降雨分布等信息,为气象、水文、环境等领域的研究和应用提供数据支持…

Java常见集合类一(List)

一、Collection接口及其常见实现子类、子接口 由上图可以看出,Collection 接口实现了 Iterable 接口; Iterable接口是Java集合类中的核心接口之一,实现该接口的类具有迭代功能,它提供了能够对实现它的子类 中的元素进行逐个遍历的…

端午节趣味互动小游戏的作用是什么

端午节吃粽子,多数行业商家都可借势进行品牌营销,而一场营销效果的优劣,除了好方案外,还需要好的工具/渠道及运营等,围绕粽子元素的互动小游戏是营销互动的主要形式之一。 运用【雨科】平台拥有多款端午节粽子主题互动…

【C语言】atoi函数的使用及模拟实现

atoi (ascii to integer),是把参数 str 所指向的字符串转换为一个整数(int类型)的库函数。 使用场景 引子: 有兴趣的朋友可以听我逐句翻译一下cpluscplus.com里的这段解释(要考六级了练一下): …

嵌入式进阶——EEPROM读写

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 设置EEPROM读写String字符串官方示例 EEPROM是一种可擦写可编程只读存储器(Electrically Erasable Programmable Read-…

MT2076 小码哥处理订单

思路: 使用二分:题目中隐含条件:如果不满足,需要找到第一个不满足的订单。 二分法需要满足单调性or有一个界线使前后两部分性质相反。这里的”界线“为:是否满足条件。假设第i天无法满足,则后面的所有天都…

SAP ABAP MD04屏幕增加:增加列

需求:增加显示销售订单送达方 主要使用二代增强出口:M61X0002 事务码T-code:CMOD 填写描述,保存到对应的包下 分配增强到项目下 激活组件,激活后效果如下 编写ZXM61U04 SAP留出的按钮,填写描述 button1_ez = 送达方. 编写ZXM61U03 *&-------------------------…

通讯录恢复怎么办?保护珍贵联系信息的2个必备技能!

手机通讯录扮演着重要的角色,它不仅仅是一个简单的联系方式列表,更是我们与亲朋好友、同事、业务伙伴等之间关系的见证。万一不慎丢失或误删通讯录,学会通讯录恢复的技能变得非常重要。本文将为你介绍几种保护珍贵联系信息的必备技能&#xf…

dubbo复习:(11)使用grpc客户端访问tripple协议的dubbo 服务器

一、服务器端依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.…

8086 汇编笔记(一):寄存器

前言 8086 CPU 有 14 个寄存器&#xff0c;每个寄存器有一个名称。这些寄存器是&#xff1a;AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW 一、通用寄存器 8086 CPU 的所有寄存器都是 16 位的&#xff0c;可以存放两个字节。AX、BX、CX、DX 这 4个寄存器通常用…

如何在操作系统中合并 PDF 文件?不同系统有不同的方法

Windows 系统 在 Windows 系统中想要合并 PDF 文件我们可能需要借助一些第三方的软件或者浏览器的插件。 我们可以在 Google 浏览器中的 Chrome 应用商店中输入“Merge pdf”这样就可以搜索到在线合并 PDF 文件的插件&#xff0c;只需要下载到浏览器中就可以直接使用。当然 Ed…

量化交易:如何在QMT中运行Python策略并在VSCode中高效调试?

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 为何选择QMT和VSCode进行量化策略开发&#xff1f; 在量化交易的世界里&#xff0c;选择正确的工具与拥有优秀的策略同等重要。调用用Visual Studio Code&#xff08;简称VSCode&#xff09;或pycharm&#xff0c;方…

【SQLServer】Merge语法

概述 MERGE语句&#xff0c;也被称为“upsert”&#xff0c;根据与源表联接的结果&#xff0c;对目标表进行插入、更新或删除操作。 例如&#xff0c;根据与另一个表的区别&#xff0c;在一个表中插入、更新或删除行&#xff0c;从而同步两个表。 MERGE 语句允许将数据源与目标…

【Vue】插值表达式 {{ }}

一、引入 插值表达式是一种Vue的模板语法 我们可以用插值表达式渲染出Vue提供的数据 作用&#xff1a;利用表达式进行插值&#xff0c;渲染到页面中 表达式&#xff1a;是可以被求值的代码&#xff0c;JS引擎会将其计算出一个结果 以下的情况都是表达式&#xff1a; money…

网络安全-钓鱼篇-利用cs进行钓鱼

一、环境 自行搭建&#xff0c;kill&#xff0c;Windows10&#xff0c;cs 二、原理 如图所示 三、钓鱼演示 首先第一步&#xff1a;打开System Profiler-分析器功能 选择克隆www.baidu.com页面做钓鱼 之后我们通过包装域名&#xff0c;各种手段让攻击对象访问&#xff1a;h…

硬盘有EFI分区格式化不了,也删不了怎么办,不能读取磁盘

问题&#xff1a;EFI为系统引导分区表明这是一块系统盘&#xff0c;常规操作无法格式化也无法删除&#xff0c;也不能读取 解决&#xff1a; 1.管理员运行cmd 2.输入diskpart 3.输入list disk 查看系统磁盘&#xff0c;并找到你格式化不了的那块磁盘 4.select disk 编号 选择…

动手学操作系统(一、搭建实验环境)

动手学操作系统&#xff08;一、搭建实验环境&#xff09; 文章目录 动手学操作系统&#xff08;一、搭建实验环境&#xff09;1. 在VMware虚拟机中安装ubuntu20.042. 安装Bochs3. 启动计算机Reference &#x1f680; 环境配置 &#x1f680; 笔者的环境使用的是 ubuntu 20.04…