2.3.1 协程设计原理与汇编实现

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: c++的这样的内部变量还有哪些?都是什么含义?非协程链接mysql的过程是怎样的?
  1. 协程理论
  2. 协程解决同步下的异步效率的需求,
  3. 三级协程结构的代码 :github.com/wangbojing/NtyCo
  4. 协程如何使用?
  5. 编译时,-L 和 -I的区别。
  6. timewait 是什么时候?
  7. 项目代码怎样维护?怎样添加新的代码?才是方便的。
  8. hook是什么? init_hook() 又是什么?dlsym()又是怎么截获的?

9b372302def9c913622927a417b6409e_655ee9ab09a14c598254f291daf6e364.png

9f51ce1df8e543f1420d805b369a3fed_0dd5cd04671b471a9e9f2cc67bdac3e5.png

8.c++的这样的内部变量还有哪些?都是什么含义?


9.非协程链接mysql的过程是怎样的?

8b913f3a2ed06f79d47478ab56814a62_62f4da6200c3471694003976aca8d715.png

10.那协程是怎样处理链接mysql的过程的?

1c706002554b8c3857065faa04e6d70e_4a19e69e059f48e38a2d197e94ad5134.png

  1. 协程是一个壳
  2. 将每一个IO操作包裹,
  3. 检测是不是可写的?
  4. 如果不可以 存放到epoll中
  5. 跳出
  6. 检测fd 池
  7. 有无就绪
  8. 没有再次轮询

11.mysqlclient 的开发接口应该有哪些?怎么实现的?参考mysql_oper.c 回答


  1. 增删改查
  2. 存储过程
  3. 二进制的添加和读取。

12.数据库的存储过程是什么?


13.协程和内存池


  1. 内存池
  2. tcmalloc
  3. jemalloc

14.面试题: 对多进程中的hook之间是抢占式惊群还是先申请先使用?


15.协程 和 线程 可以混用吗? 可以为什么?不可以为什么?


16.辨析:协程的性能怎么样?


  1. 之所以用协程是因为性能高?
  2. 不是协程高,是异步高


  1. 协程比epoll要快?
  2. 两者没有比较的角度。
  3. 管理IO情况: 协程 < reactor/epoll

从io 管理的角度去看,协程也是使用了epoll 实现的。

协程轻量级线程?

17.泛泛之谈


  1. 并发量: fd的数量和协程的数量是一致的。
  2. 每秒的接入量, 每次申请fd 之后,coroutine create。
  3. 断开连接后, coroutine_destroy
  4. 发送文件数量、读写文件书数量,本质也是io的使用
  5. 涉及网络时,一定要先用iperf测一下网络的带宽
  6. 百万并发代码: mul_port_client.c

18.多核的问题:


  1. 能做cpu粘合的 只有进程和线程
  2. 协程想做怎么办? 只能借助 多进程,多线程。
  3. 每一个线程一个调度器 特点:简单,不需要加锁
  4. 多个线程公用一个调度器 ; 对与 调度器,入队时候需要加锁。
  5. 每一个进程一个调度器; 简单,

setjmp/longjmp 能否实现多个线程跳转?解答:(12条消息) Setjmp的支持多线程问题_anghlq的博客-CSDN博客

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
存储 Linux 调度
协程(coroutine)的原理和使用
协程(coroutine)的原理和使用
|
3月前
|
存储 安全 测试技术
GoLang协程Goroutiney原理与GMP模型详解
本文详细介绍了Go语言中的Goroutine及其背后的GMP模型。Goroutine是Go语言中的一种轻量级线程,由Go运行时管理,支持高效的并发编程。文章讲解了Goroutine的创建、调度、上下文切换和栈管理等核心机制,并通过示例代码展示了如何使用Goroutine。GMP模型(Goroutine、Processor、Machine)是Go运行时调度Goroutine的基础,通过合理的调度策略,实现了高并发和高性能的程序执行。
253 29
|
3月前
|
负载均衡 算法 Go
GoLang协程Goroutiney原理与GMP模型详解
【11月更文挑战第4天】Goroutine 是 Go 语言中的轻量级线程,由 Go 运行时管理,创建和销毁开销小,适合高并发场景。其调度采用非抢占式和协作式多任务处理结合的方式。GMP 模型包括 G(Goroutine)、M(系统线程)和 P(逻辑处理器),通过工作窃取算法实现负载均衡,确保高效利用系统资源。
|
5月前
|
调度 Python
揭秘Python并发编程核心:深入理解协程与异步函数的工作原理
在Python异步编程领域,协程与异步函数成为处理并发任务的关键工具。协程(微线程)比操作系统线程更轻量级,通过`async def`定义并在遇到`await`表达式时暂停执行。异步函数利用`await`实现任务间的切换。事件循环作为异步编程的核心,负责调度任务;`asyncio`库提供了事件循环的管理。Future对象则优雅地处理异步结果。掌握这些概念,可使代码更高效、简洁且易于维护。
55 1
|
4月前
|
数据采集 调度 Python
Python编程异步爬虫——协程的基本原理(一)
Python编程异步爬虫——协程的基本原理(一)
36 0
|
4月前
|
数据采集 Python
Python编程异步爬虫——协程的基本原理(二)
Python编程异步爬虫——协程的基本原理(二)
37 0
|
4月前
|
存储 前端开发 rax
协程设计与原理(二)
协程设计与原理(二)
31 0
|
4月前
|
Java Linux Go
协程的设计原理(一)
协程的设计原理(一)
52 0
|
7月前
|
调度 Python
揭秘Python并发编程核心:深入理解协程与异步函数的工作原理
【7月更文挑战第15天】Python异步编程借助协程和async/await提升并发性能,减少资源消耗。协程(async def)轻量级、用户态,便于控制。事件循环,如`asyncio.get_event_loop()`,调度任务执行。异步函数内的await关键词用于协程间切换。回调和Future对象简化异步结果处理。理解这些概念能写出高效、易维护的异步代码。
89 2
|
7月前
|
编译器
8086 汇编笔记(八):转移指令的原理
8086 汇编笔记(八):转移指令的原理