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

简介: 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博客

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
存储 Linux 调度
协程(coroutine)的原理和使用
协程(coroutine)的原理和使用
|
存储 安全 测试技术
GoLang协程Goroutiney原理与GMP模型详解
本文详细介绍了Go语言中的Goroutine及其背后的GMP模型。Goroutine是Go语言中的一种轻量级线程,由Go运行时管理,支持高效的并发编程。文章讲解了Goroutine的创建、调度、上下文切换和栈管理等核心机制,并通过示例代码展示了如何使用Goroutine。GMP模型(Goroutine、Processor、Machine)是Go运行时调度Goroutine的基础,通过合理的调度策略,实现了高并发和高性能的程序执行。
1175 29
|
负载均衡 算法 Go
GoLang协程Goroutiney原理与GMP模型详解
【11月更文挑战第4天】Goroutine 是 Go 语言中的轻量级线程,由 Go 运行时管理,创建和销毁开销小,适合高并发场景。其调度采用非抢占式和协作式多任务处理结合的方式。GMP 模型包括 G(Goroutine)、M(系统线程)和 P(逻辑处理器),通过工作窃取算法实现负载均衡,确保高效利用系统资源。
566 3
|
调度 Python
揭秘Python并发编程核心:深入理解协程与异步函数的工作原理
在Python异步编程领域,协程与异步函数成为处理并发任务的关键工具。协程(微线程)比操作系统线程更轻量级,通过`async def`定义并在遇到`await`表达式时暂停执行。异步函数利用`await`实现任务间的切换。事件循环作为异步编程的核心,负责调度任务;`asyncio`库提供了事件循环的管理。Future对象则优雅地处理异步结果。掌握这些概念,可使代码更高效、简洁且易于维护。
429 1
|
数据采集 调度 Python
Python编程异步爬虫——协程的基本原理(一)
Python编程异步爬虫——协程的基本原理(一)
293 0
|
数据采集 Python
Python编程异步爬虫——协程的基本原理(二)
Python编程异步爬虫——协程的基本原理(二)
200 0
|
存储 前端开发 rax
协程设计与原理(二)
协程设计与原理(二)
243 0
|
Java Linux Go
协程的设计原理(一)
协程的设计原理(一)
230 0
|
调度 Python
揭秘Python并发编程核心:深入理解协程与异步函数的工作原理
【7月更文挑战第15天】Python异步编程借助协程和async/await提升并发性能,减少资源消耗。协程(async def)轻量级、用户态,便于控制。事件循环,如`asyncio.get_event_loop()`,调度任务执行。异步函数内的await关键词用于协程间切换。回调和Future对象简化异步结果处理。理解这些概念能写出高效、易维护的异步代码。
333 2
8086 汇编笔记(八):转移指令的原理
8086 汇编笔记(八):转移指令的原理