Webserver回顾

线程池如何工作?

从请求队列中取出request请求,然后process处理
在这里插入图片描述
process是处理业务代码,用于解析http请求的

如何为线程上锁

由于线程共享同一块资源,为了避免线程重复读写资源的数据安全问题
在这里插入图片描述

发什么信号

定义信号

在这里插入图片描述

信号量如何工作的?

当有一个请求添加到请求队列中时,释放信号,启动工作线程来解析这个请求。这样的话就不会还没有获得请求就启动工作线程。
在这里插入图片描述
run是工作线程,wait的时候阻塞在这,当释放一个信号后,就继续执行。
在这里插入图片描述
这里的wait和post实际上是解耦合之后的。简化了命令
在这里插入图片描述
在线程同步机制类里面,有互斥锁类、条件变量类、信号量类,这些都保证了所有线程能够同步进行,不会有的特别快。有点理解这个线程同步的内涵了

信号捕捉

信号量工作除了wait和post,还有信号捕捉。信号捕捉应该捕捉的就是来自系统的中断啥的
在这里插入图片描述
在这里插入图片描述
handler是一个信号处理函数的指针。
在这里插入图片描述
在这里插入图片描述
为什么一开始要忽略SIGPIPE信号?
在这里插入图片描述

考虑客户端异常断开的情况,那这个时候服务器再往里面写数据那就是直接退出了,在任何时候我们应该保持服务器能够一直开启而不是崩溃退出。忽略了这个情况服务器就不会未写入而崩溃,提升了健壮性。
在这里插入图片描述
发送信号的位置好像并不是说放在线程与线程之间,而是放在业务逻辑之间,即不同的函数当中,比如添加请求的时候,那就会释放信号,说明这个时候有请求了需要你去读了,而在线程工作的时候会等待,等到你有一个请求过来了我再去工作
在这里插入图片描述
所有工作线程刚被创建的时候就是就绪态了,刚被创建的时候就有回调,而run是一个死循环,线程池创建的时候,所有8个子线程就就绪工作了,只不过被wait阻塞了,一旦拿到一个信号立马就会开始工作。调用业务process()处理流程
在这里插入图片描述
在这里插入图片描述
所以说一般在最外面主函数来执行请求的获取,然后是工作线程来对请求解析执行业务逻辑。工作线程和IO线程是如此区分的。

线程池类有哪些函数?

在这里插入图片描述
构造、析构、append、worker、run
回调函数worker要用函数指针,void* worker(void *arg);使用静态函数

append传入了一个T*的request对象
process()是用request对象来调用的,request是线程池类的私有成员,也是
在这里插入图片描述

在这里插入图片描述
也是一个套接字
在这里插入图片描述
处理该传入的套接字

run中如何信号阻塞

m_queuestat是
在这里插入图片描述
线程池类的私有成员
在这里插入图片描述
而这个私有成员是线程同步类里面的信号量类
在这里插入图片描述
设计模式是模板方法
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验室资源调度系统:基于Spring Boot的创新

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

STM32与CS创世SD NAND(贴片SD卡)结合完成FATFS文件系统移植与测试是一个涉及硬件与软件综合应用的复杂过程

一、前言 在STM32项目开发中,经常会用到存储芯片存储数据。 比如:关机时保存机器运行过程中的状态数据,上电再从存储芯片里读取数据恢复;在存储芯片里也会存放很多资源文件。比如,开机音乐,界面上的菜单图…

【在Linux世界中追寻伟大的One Piece】手写序列化与反序列化

目录 1 -> 序列化与反序列化概念 2 -> 序列化与反序列化作用和应用场景 3 -> 手写序列化与反序列化 1 -> 序列化与反序列化概念 序列化是指将对象的状态信息转换为可以存储或传输的形式的过程,通常涉及将数据结构或对象转换成字节流或字符串格式。反…

uniapp自动注册机制:easycom

传统 Vue 项目中,我们需要注册、导入组件之后才能使用组件。 uniapp 框架提供了一种组件自动注册机制,只要你在 components 文件夹下新建的组件满足 /components/组件名/组件名.vue 的命名规范,就能直接使用。 注意:组件的文件夹…

springboot基于微信小程序的停车场管理系统

摘 要 停车场管理系统是一种基于移动端的应用程序,旨在方便车主停车的事务办理。该小程序提供了便捷的停车和功能,使车主能够快速完成各项必要的手续和信息填写。旨在提供一种便捷、高效的预约停车方式,减少停车手续的时间和精力成本。通过该…

AI技术在电商行业的创新应用与未来发展

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

.NET9 - 新功能体验(一)

被微软形容为“迄今为止最高效、最现代、最安全、最智能、性能最高的.NET版本”——.NET 9已经发布有一周了,今天想和大家一起体验一下新功能。 此次.NET 9在性能、安全性和功能等方面进行了大量改进,包含了数千项的修改,今天主要和大家一起体…

【Oracle篇】SQL性能优化实战案例(从15秒优化到0.08秒)(第七篇,总共七篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

神经网络入门实战:(一)神经网络解决的两种问题,以及AI、机器学习、深度学习三者之间的逻辑关系

AI、机器学习、深度学习三者之间的逻辑关系: 两种问题 (1)回归问题 回归问题是指预测一个或多个连续值的任务。这些连续值可以是任意实数,比如价格、温度、分数等。 回归问题的目标通常是 找到一个函数 ,该函数可以…

深入解析TK技术下视频音频不同步的成因与解决方案

随着互联网和数字视频技术的飞速发展,音视频同步问题逐渐成为网络视频播放、直播、编辑等过程中不可忽视的技术难题。尤其是在采用TK(Transmission Keying)技术进行视频传输时,由于其特殊的时序同步要求,音视频不同步现…

豆包MarsCode算法题:最小周长巧克力板组合

问题描述 思路分析 这道题可以抽象为一个最优化问题: 问题分析 每个正方形的面积为 k ,对应的边长为 k ,周长为 4k 。给定整数 n ,我们需要找到若干正方形,使得它们的面积之和恰好等于 n: 同时尽量最小…

解析与修复vcruntime140_1.dll问题,总结四种vcruntime140_1.dll解决方法

在使用Windows系统的过程中,不少用户可能会遇到与vcruntime140_1.dll相关的问题。这个看似神秘的文件,其实在很多软件的运行中扮演着至关重要的角色。今天的这篇文章将教大家四种vcruntime140_1.dll解决方法。 一、vcruntime140_1.dll文件分析 &#xf…

WebGL进阶(九)光线

理论基础: 点光源 符合向量定义,末减初。 平行光 环境光 效果: 点光源 平行光 环境光 源码: 点光源 平行光 环境光 复盘:

【Amazon】亚马逊云科技Amazon DynamoDB 实践Amazon DynamoDB

Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,专为高性能和可扩展性设计,特别适合需要快速响应和高吞吐量的应用场景,如移动应用、游戏、物联网和实时分析等。 工作原理 Amazon DynamoDB 在任何规模下响应时间一律达毫秒级&#xff…

【AIGC】ChatGPT提示词Prompt解析:拒绝的艺术:如何优雅地说“不“

引言 在人际交往的复杂网络中,学会优雅地拒绝是一种至关重要的社交智慧。很多人往往因为害怕伤害他人的感受,而选择敷衍、拖延或不置可否。 然而,真正的智慧在于如何用尊重和同理心传达"不"的信息。 本文将深入探讨优雅拒绝的艺术,帮助你在维护自身边界的同时,…

Java项目实战II基于微信小程序的农场驿站平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着移动互…

支付宝租赁小程序的优势与应用前景分析

内容概要 在这个快节奏的时代,租赁服务越来越成为大家生活中的一部分。而支付宝租赁小程序正是这个大潮流中的一颗璀璨明珠。通过简单易用的界面和强大的功能,这个小程序不仅让用户在租赁过程中获得了前所未有的便利,也为商家提供了新的商业…

Elasticsearch 中的热点以及如何使用 AutoOps 解决它们

作者:来自 Elastic Sachin Frayne 探索 Elasticsearch 中的热点以及如何使用 AutoOps 解决它。 Elasticsearch 集群中出现热点的方式有很多种。有些我们可以控制,比如吵闹的邻居,有些我们控制得较差,比如 Elasticsearch 中的分片分…

【H2O2|全栈】JS进阶知识(七)ES6(3)

目录 前言 开篇语 准备工作 递归 概念 形式 优缺点 案例 数组求和 斐波那契数列 递归查找数据 柯里化 概念 形式 什么时候使用柯里化? 多维数组扁平化 多维数组 扁平化 利用flat() 与字符串相互转化 与JSON字符串相互转化 some(),…

【架构】主流企业架构Zachman、ToGAF、FEA、DoDAF介绍

文章目录 前言一、Zachman架构二、ToGAF架构三、FEA架构四、DoDAF 前言 企业架构(Enterprise Architecture,EA)是指企业在信息技术和业务流程方面的整体设计和规划。 最近接触到“企业架构”这个概念,转念一想必定和我们软件架构…