C++服务器框架开发3——协程与线程的简单理解/并发与并行

news2025/1/10 23:35:35

该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。
其教学视频见:[C++高级教程]从零开始开发服务器框架(sylar)

上一篇:C++服务器框架开发2——头文件memory/typedef

C++服务器框架开发3——协程与线程的简单理解/并发与并行

  • 目前进度
  • 协程与线程的简单理解
  • 并发与并行

目前进度

目前刚看完第一个视频,该博主写完了log.h的大致内容,进度如下图。
要点:

  1. 将上次定义的枚举类的level单独定义为类(25-35)。
  2. 新定义了两个类StdoutLogAppender和FileLogAppender。
  3. 补充了一些注释。
    在这里插入图片描述
    由于内容太长,一张图截取不完,附上一张小图。
    在这里插入图片描述

协程与线程的简单理解

这次的学习中没什么难点,所以就先简单了解下协程和线程。参考自:线程和协程的区别的通俗说明。

概括:
线程是操作系统的资源,比较昂贵。java、C++等程序在创建线程时,需要向操作系统发出请求,这是比较麻烦的。而协程的创建则是在编程语言自身上就能完成,不需要向操作系统申请。
协程更轻量。线程与程序主线程是同一级别的东西,协程则是跑在程序主线程上的。
线程可以在多核环境下实现并行,而协程则是为了实现并发而产生的。

并发与并行

注:下面的图片也是来自该文章
图片很直观了,并行是多个任务并行发生(并行,加速),并发是多个任务交替处理(交替可能是为了充分利用单任务中某些等待时间)。

文章举的协程的业务场景例子是两个sql查询。如果开两个线程可能不划算,因为线程大部分时间都在等待服务器响应,这太浪费资源。所以用协程就更符合实际需求。个人觉得,这和微机原理讲的多级流水线操作很像。
在这里插入图片描述

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

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

相关文章

【基于容器的部署、扩展和管理】3.1 容器编排系统和Kubernetes集群的构建

往期回顾: 第一章:【云原生概念和技术】 第二章:【容器化应用程序设计和开发】 3.1 基于容器的部署、扩展和管理 3.1.1 容器介绍3.1.2 容器编排系统和Kubernetes集群的构建3.1.2.1 Kubernetes 集群3.1.2.2 容器编排系统 3.1.3 Kubernetes 集…

MySQL — 锁

文章目录 锁0、概述一、全局锁1.1 概述1.2 语法1.3 一致性数据备份1.4 问题 二、表级锁2.1 表锁2.2 元数据锁2.3 意向锁 三、行级锁3.1 概述3.2 行锁3.3 间隙锁 与 临建锁 锁 0、概述 锁是计算机协调多个进程和线程并发访问某一资源的机制。 ​ 在数据库中,除传统…

5.5G,通信产业下一个分水岭?

通信领域的变化日新月异,在5G商用渐次铺开之后,5.5G比6G先行到来。 5月28日获悉,近日北京移动首个5G-A实验基站在昌平区的国际信息港建设开通,引发业内关注。业内观点认为,5.5G是5G和6G之间的过渡“台阶”,…

阿秀离职了

小伙伴们大家好,我是阿秀。 是的,我从字节离职了,从抖音研发大部门离职了。 我从21年6月份毕业后就一直在字节跳动抖音这边工作,到现在差不多已经 2 年时间了,两年时光如白马过隙一晃而过,时间真的很快。 天…

Matlab与ROS(1/2)---ros1_bridge(八)

0. 简介 众所周知,ROS 2是具有不同架构的ROS的更新版本。这两个网络是分开的,在ROS和ROS 2的节点之间没有直接的通信。而ros1_bridge包则是提供了一个网桥,可以在ROS和ROS 2之间交换消息。桥接器管理所需的所有转换,并在两个网络…

【源码篇】基于SpringBoot+Vue的学生选课管理系统

1、项目介绍 基于SpringBootVue的学生选课管理系统采用前后端分离的架构方式,系统分为管理员、老师、学生等三种角色,权限分配如下 管理员拥有所有权限 学生管理:可以对所有学生进行管理操作(新增学生、修改学生、删除学生&…

【Netty】一行简单的writeAndFlush都做了哪些事(十八)

文章目录 前言一、源码分析1.1 ctx.writeAndFlush 的逻辑1.2 writeAndFlush 源码1.3 ChannelOutBoundBuff 类1.4 addMessage 方法1.5 addFlush 方法1.6 AbstractNioByteChannel 类 总结 前言 回顾Netty系列文章: Netty 概述(一)Netty 架构设…

基于Java+SpringBoot+Vue实现美术馆管理系统

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

HTMLCSS中的树形结构图

我们可以只使用 html 和 css 创建树视图(可折叠列表) &#xff0c;而不需要 JavaScript。可访问性软件将看到树形视图作为列表嵌套在披露窗口小部件中&#xff0c;并且自动支持标准键盘交互。 1、HTML 我们就从简单嵌套列表的 html 开始: <ul><li>Giant planets&…

五个有用的微信公众号运营技巧!

微信公众号是一个非常有用的网络工具&#xff0c;可以让个人或组织与其关注者建立起联系。随着人们使用微信的增加&#xff0c;许多公司和组织都使用微信公众号来扩大其业务范围和提高其品牌形象。在本文中&#xff0c;我将分享一些关于如何运营一个成功的微信公众号的建议。 一…

入门性能测试(一)

一、JDK的下载和安装 1、jdk安装 官网位置&#xff1a;https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 2、安装JDK 建议&#xff1a;安装路径&#xff0c;不要有汉字目录&#xff0c;不要有空格目录&#xff0c;不要有x86目录 3、配置环境变量…

附下载 | 354个数据开发利用机构名单来了

数字中国建设正在驶入发展快车道。2023年2月&#xff0c;中共中央、国务院印发的《数字中国建设整体布局规划》提出&#xff0c;到2025年&#xff0c;基本形成横向打通、纵向贯通、协调有力的一体化推进格局&#xff0c;数字中国建设取得重要进展。到2035年&#xff0c;数字化发…

一个未初始化的局部变量引起的BUG(二)-PC13引脚异常

现象&#xff1a; STM32F030C8中PC13引脚异常&#xff0c;配置为GPIO输出&#xff0c;有时编译后出现异常&#xff0c;表现如下&#xff1a; 1、不能输出高电平。 2、烧回原来正确的版本固件&#xff0c;也不能输出高电。 3、过一段时间后&#xff0c;能恢复。 4、同样的代码&…

征文 | CSDN创作纪念日

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 征文 | CSDN创作纪念日 机缘 CSDN专业的IT社区&#xff0c;致力于为IT从业人员提供最新、最全面的技术资讯、最专业的技术交流平台。作为一个IT从业者&#xff0c;我最…

DG4Pros结合M3D,1:500地籍免像控实践详解

前言 免像控技术正在迈向成熟&#xff0c;逐渐从理论走向了实际应用。本期&#xff0c;我们详细讨论DG4 Pros相机配合北京中测智绘科技有限公司的Mirauge 3D软件在1:500地籍精度的免像控作业中的可行性及具体项目流程。 DG4 Pros倾斜摄影相机 实验背景 无人机航空摄影测量是…

Facebook群组营销:建立社群,促进互动与品牌增长

除了常见的Facebook广告和页面推广&#xff0c;Facebook群组也成为了一种强大的营销工具。本文将探讨Facebook群组营销的潜力以及如何建立社群、促进互动并实现品牌增长。 1.Facebook群组&#xff1a;一个强大的社群平台 理解Facebook群组的概念&#xff1a;Facebook群组是一个…

【数据分析之道-Matplotlib(五)】Matplotlib柱状图

文章目录 专栏导读1、matplotlib柱状图基本语法1.1bar()函数绘制垂直柱状图基本语法1.2barh()函数绘制垂直柱状图基本语法 2、使用 bar() 来创建一个简单的柱形图3、垂直方向的柱形图可以使用 barh() 方法来设置4、设置柱形图颜色4.1使用单个颜色值4.2使用颜色列表 5、设置柱形…

【Unity】 HTFramework框架(四十四)【进阶篇】指令系统

更新日期&#xff1a;2023年5月29日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 指令系统简单使用定义InstructionAgent编辑指令代码执行指令代码 指令代码语法基本语法指令关键字注释支持的值类型标识符命名规范 进阶使用运行时检视面…

【MySQL】MySQL的事务原理和实现?

文章目录 MySQL事务的底层实现原理一、事务的目的可靠性和并发处理 二、实现事务功能的三个技术2.1 redo log 与 undo log介绍2.1.1 redo log2.1.2undo log 2.2 mysql锁技术2.2.1 mysql锁技术 2.3 MVCC基础 三、事务的实现3.1 原子性的实现3.1.1 undo log 的生成3.1.2 根据undo…

机器视觉陶瓷板智能检测设备在工业质检中的应用

随着工业自动化的不断发展&#xff0c;机器视觉技术在质量控制领域中的应用越来越广泛。在陶瓷制品生产中&#xff0c;机器视觉技术可以帮助企业实现陶瓷板的智能检测&#xff0c;减少人工操作的错误率&#xff0c;提高生产效率和产品质量。本文将介绍机器视觉陶瓷板智能检测设…