当前位置: 首页 > news >正文

1.12.C++项目:仿muduo库实现并发服务器之LoopThreadPool模块的设计

文章目录

  • 一、LoopThreadPool模块
  • 二、实现思想
    • (一)功能
    • (二)意义
    • (三)功能设计
  • 三、代码

一、LoopThreadPool模块

1.线程数量可配置(0或多个)
2. 对所有的线程进行管理,其实也就是管理0个或多个LoopThread对象!
3. 提供线程分配的功能!

二、实现思想

(一)功能

针对LoopThread设计一个线程池,便于管理。

(二)意义

对所有的LoopThread进行分配和管理!

(三)功能设计

1.线程数量可配置(0或多个)
注意事项:在服务器中,主从Reactor模型是 主线程只负责新连接获取,丛书线程负责新连接的事件监控以及处理!因此当前的线程池,有可能从属线程会数量为0,也就是实现单 Reactor服务器,一个线程及负责获取连接以及连接的处理!
2. 对所有的线程进行管理,其实也就是管理0个或多个LoopThread对象!
3. 提供线程分配的功能!
当主线程获取了一个链接,需要将新的线程挂到从属线程上进行事件监控以及管理!
假设0个从属线程,则直接分配给主线程的EventLoop,进行处理!
假设有多个丛书线程,则采用RR轮转!(将对应线程的EventLoop获取到,设置给对应的Connection)

三、代码

class LoopThreadPool {private:int _thread_count;int _next_idx;EventLoop *_baseloop;std::vector<LoopThread*> _threads;std::vector<EventLoop *> _loops;public:LoopThreadPool(EventLoop *baseloop):_thread_count(0), _next_idx(0), _baseloop(baseloop) {}void SetThreadCount(int count) { _thread_count = count; }void Create() {if (_thread_count > 0) {_threads.resize(_thread_count);_loops.resize(_thread_count);for (int i = 0; i < _thread_count; i++) {_threads[i] = new LoopThread();_loops[i] = _threads[i]->GetLoop();}}return ;}EventLoop *NextLoop() {if (_thread_count == 0) {return _baseloop;}_next_idx = (_next_idx + 1) % _thread_count;return _loops[_next_idx];}
};

相关文章:

1.12.C++项目:仿muduo库实现并发服务器之LoopThreadPool模块的设计

文章目录 一、LoopThreadPool模块二、实现思想&#xff08;一&#xff09;功能&#xff08;二&#xff09;意义&#xff08;三&#xff09;功能设计 三、代码 一、LoopThreadPool模块 1.线程数量可配置&#xff08;0或多个&#xff09; 2. 对所有的线程进行管理&#xff0c;其…...

SpringBoot介绍

一、什么是SpringBoot 在使用传统的Spring去做Java EE&#xff08;Java Enterprise Edition&#xff09;开发中&#xff0c;大量的 XML 文件存在于项目之中&#xff0c;导致JavaEE项目变得慢慢笨重起来&#xff0c;繁琐的配置和整合第三方框架的配置&#xff0c;导致了开发和部…...

2022最新版-李宏毅机器学习深度学习课程-P17 卷积神经网络CNN

一、CNN 用于图像分类 需要图片大小统一 彩色图像分为R G B 三层&#xff0c;展平后首尾相接 值代表着颜色的强度 图像识别中不需要全连接的&#xff0c;参数太多了 观测1&#xff1a;通过判断多个小局部图像就能判断出图片标签 感受野的定义 简化1 感受野可以重叠&#xff…...

微博清理僵尸粉

1.选择chrome或者firefox浏览器 2.登陆微博账号 3.chrome右键点检查&#xff0c;选择console firefox右键点检查&#xff0c;选择控制台 4.粘贴下面代码到console或者控制台并且回车 let removeTargetFans false; /*是否删除符合条件的粉丝&#xff0c;默认关闭*/let dee…...

创建React Native的第一个hello world工程

创建React Native的第一个hello world工程 需要安装好node、npm环境 如果之前没有安装过react-native-cli脚手架的&#xff0c;可以按照下述步骤直接安装。如果已经安装过的&#xff0c;但是在使用这个脚手架初始化工程的时候遇到下述报错的话 cli.init(root, projectname);…...

基础课3——自然语言处理的应用

自然语言处理是一种将人类语言转换为机器语言&#xff0c;以实现人机交互的技术。应用非常广泛&#xff0c;例如&#xff1a; 人机交互&#xff1a;自然语言处理技术可以应用于人机交互&#xff0c;让机器能够理解和运用人类语言&#xff0c;从而实现更加智能化的交互体验。 机…...

理解 Git 的三个工作区:工作区、暂存区和版本库

文章目录 创建 Git 本地仓库配置Git认识⼯作区、暂存区、版本库添加⽂件--场景查看 .git ⽂件添加⽂件--场景⼆ 创建 Git 本地仓库 要提前说的是&#xff0c;仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制&#xff0c;就必须先创建⼀个仓库出来。创建⼀个 Gi…...

web前端基础训练-----创建用户反馈表单

1&#xff0c;实验代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>用户反馈表单</title></head><body><form><fieldset><h1>用户反馈</h1><hr/><h4>亲爱的用…...

Scrum 敏捷管理流程图及敏捷管理工具

​敏捷开发中的Scrum流程通常可以用一个简单的流程图来表示&#xff0c;以便更清晰地展示Scrum框架的各个阶段和活动。以下是一个常见的Scrum流程图示例&#xff1a; 转自&#xff1a;Leangoo.com 免费敏捷工具 这个流程图涵盖了Scrum框架的主要阶段和活动&#xff0c;其中包括…...

Android Handler/Looper视角看UI线程的原理

概述 Handler/Looper机制是android系统非重要且基础的机制&#xff0c;即使在rtos或者linux操作系统上开发应用框架时&#xff0c;也经常借鉴这个机制。通过该机制机制可以让一个线程循环处理事件&#xff0c;事件处理逻辑即在Handler的handleMessge种。本文建议android8.1源码…...

【网络】网络入门

网络入门 一、网络发展二、网络协议初识1、认识"协议"2、协议分层3、OSI七层模型4、TCP/IP五层(或四层)模型 三、网络传输基本流程1、同局域网的两台主机通信2、跨网络的两台主机通信 四、网络中的地址管理1、IP地址2、认识MAC地址 一、网络发展 独立模式&#xff1a…...

GO-实现简单文本格式 文本字体颜色、大小、突出

毫无疑问GO的生态就是一坨大便。老子英文水平小学啊。 实现简单文本格式 文本字体颜色、大小、突出显示等。 创建要给docx文件容器【我估算的】 doc : document.New() defer doc.Close() doc.SaveToFile("simple.docx") 把容器保存为文件 设置标题 创建自然段…...

铅华洗尽,粉黛不施,人工智能AI基于ProPainter技术去除图片以及视频水印(Python3.10)

视频以及图片修复技术是一项具有挑战性的AI视觉任务&#xff0c;它涉及在视频或者图片序列中填补缺失或损坏的区域&#xff0c;同时保持空间和时间的连贯性。该技术在视频补全、对象移除、视频恢复等领域有广泛应用。近年来&#xff0c;两种突出的方案在视频修复中崭露头角&…...

latex,不带行号的algorithm

\usepackage{algorithm,algorithmic}\begin{algorithm} \caption{The Example Algorithm} \label{alg123} \begin{algorithmic} \STATE{\textbf{Input:} ...} \STATE{\textbf{Output:} ...} \IF{...} \STATE{...} \ENDIF \RETURN{...} \end{algorithmic} \end{algorithm}...

RocketMQ高性能核心原理与源码架构剖析

文章目录 一、源码环境搭建主要功能模块源码启动服务启动nameServer启动Broker发送消息消费消息 二、源码热身阶段NameServer的启动过程关注重点源码重点 Broker服务启动过程关注重点源码重点 Netty服务注册框架关注重点源码重点关于RocketMQ的同步结果推送与异步结果推送 Brok…...

MATLAB中zp2tf函数用法

目录 语法 说明 示例 质点弹簧系统的传递函数 zp2tf函数的功能是将零极点增益滤波器参数转换为传递函数形式。。 语法 [b,a] zp2tf(z,p,k) 说明 [b, a] zp2tf(z, p, k) 将一个分解的传递函数表示方式转换。 将单输入/多输出&#xff08;SIMO&#xff09;系统的多输出…...

解决:uniapp项目中调用小程序的chooseAddress() API失效

目录 问题描述 解决方案 问题描述 使用 Hbuilder X 编辑器和 uni-app 框架开发小程序项目&#xff0c;在调用小程序提供的 uni.chooseAddress() API实现选择收货地址的功能时&#xff0c;点击选择收货地址没有反应&#xff0c;获取不到用户收货地址&#xff0c;API失效了 …...

2023 项目组总结(待完善)

2023 项目组总结 目录概述需求&#xff1a; 设计思路实现思路分析1.JA项目2.XC项目3.XL 项目4.tydic 项目 总结 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better re…...

Chrome浏览器 键盘快捷键整理

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 〇、前言一、常用快捷键二、分类型快捷键表&#xff08;…...

【JAVA】集合与背后的逻辑框架,包装类,List,Map,Set,静态内部类

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 collectionCollection创建collection使用泛型collection方法 Map 接口Map的存储结构HashMap和Tr…...

从压测到瓶颈定位:一次完整的性能分析思路

很多人刚接触压测时&#xff0c;会产生一种错觉&#xff1a;“压测不就是看 QPS 吗&#xff1f;”但压测的本质&#xff0c;从来不是“跑数字”&#xff0c;而是&#xff1a;找到系统的性能极限&#xff0c;以及限制系统性能的真正瓶颈。 本文会围绕下面几个核心问题&#xff0…...

AI智能体信用评分系统:构建可评估、可管理的多智能体协作框架

1. 项目概述&#xff1a;一个为AI智能体设计的信用评分系统最近在折腾AI智能体&#xff08;Agent&#xff09;的落地应用时&#xff0c;我遇到了一个挺有意思的问题&#xff1a;当多个智能体协同工作&#xff0c;或者一个智能体需要调用外部工具、API时&#xff0c;如何评估和追…...

UPS 蓄电池在线监控系统是什么?工业 UPS 电源有必要安装吗?

在机房、工业生产、医疗设备等依赖 UPS 不间断电源的场景中&#xff0c;蓄电池往往被视为设备的 “心脏”。很多用户配置了优质 UPS 电源&#xff0c;却忽略了对蓄电池的实时管理&#xff0c;等到突发停电才发现电池亏电、失效&#xff0c;导致 UPS 无法正常供电&#xff0c;引…...

Rust服务脚手架:快速构建生产级微服务的标准化起点

1. 项目概述&#xff1a;为什么我们需要一个Rust服务脚手架&#xff1f;在当今的微服务与云原生架构浪潮中&#xff0c;快速启动一个健壮、可维护的后端服务是每个开发团队的核心诉求。如果你和我一样&#xff0c;厌倦了每次开启新项目时&#xff0c;都要重复搭建项目结构、配置…...

别再只会用Matplotlib画基础热力图了!这5个高级定制技巧让你的图表瞬间专业

解锁Matplotlib热力图的5个高阶美学密码&#xff1a;从基础图表到专业可视化 当你第一次用Matplotlib画出热力图时&#xff0c;那种成就感就像解开了数据分析的第一道密码。但随着项目复杂度的提升&#xff0c;那些默认参数生成的图表开始显得单薄——颜色映射不够精准、标注信…...

终极营销自动化工作流设计:工程师如何构建高效营销流程

终极营销自动化工作流设计&#xff1a;工程师如何构建高效营销流程 【免费下载链接】Marketing-for-Engineers A curated collection of marketing articles & tools to grow your product. 项目地址: https://gitcode.com/gh_mirrors/ma/Marketing-for-Engineers …...

RT1064驱动ICM42605避坑指南:从SPI配置到数据转换,新手也能搞定的IMU实战

RT1064与ICM42605传感器深度开发实战&#xff1a;从硬件连接到数据处理的完整指南 在智能车和机器人竞赛中&#xff0c;精确的姿态感知系统往往是决定胜负的关键因素。恩智浦RT1064微控制器搭配TDK ICM42605六轴惯性测量单元(IMU)的方案&#xff0c;因其出色的性能和合理的成本…...

基于Circuit Playground与柔性3D打印的可穿戴设备制作全攻略

1. 项目概述&#xff1a;当创客遇上柔性穿戴如果你玩过Arduino&#xff0c;或者对智能硬件有点兴趣&#xff0c;那你大概率听说过Adafruit的Circuit Playground。这块板子挺有意思&#xff0c;它把一堆传感器、LED灯、小喇叭和按钮都塞进了一个硬币大小的板子上&#xff0c;号称…...

回流平台深耕闲置翡翠流通,以数字化服务激活珠宝产业新动能

据中国珠宝玉石首饰行业协会数据&#xff0c;我国珠宝玉石首饰产业市场规模持续扩大&#xff0c;翡翠玉石作为第二大珠宝消费品类&#xff0c;市场存量可观。与此同时&#xff0c;发达国家二手高端消费品交易占整个高端消费品市场的20%至30%&#xff0c;我国目前占比约5%&#…...

ElevenLabs声音库调优秘技:如何用API+Prompt工程将TTS自然度提升67%(附2024最新声纹参数表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs声音库资源推荐 ElevenLabs 提供了业界领先的高质量语音合成服务&#xff0c;其声音库&#xff08;Voice Library&#xff09;涵盖多语种、多风格的预训练语音模型&#xff0c;适用于播客、有…...