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


    1. 协程理论

      1. 协程解决同步下的异步效率的需求,
    2. 三级协程结构的代码 :github.com/wangbojing/NtyCo

    3. 协程如何使用?

    4. 编译时,-L 和 -I的区别。

    5. timewait 是什么时候?

    6. 项目代码怎样维护?怎样添加新的代码?才是方便的。

    7. hook是什么? init_hook() 又是什么?dlsym()又是怎么截获的?![[Pasted image 20220823202942.png]]

    8. ![[Pasted image 20220823203048.png]]
      c++的这样的内部变量还有哪些?都是什么含义?

    9. 非协程链接mysql的过程是怎样的?![[Pasted image 20220823203508.png]]

    10. 那协程是怎样处理链接mysql的过程的? ![[Pasted image 20220823203458.png]]![[Pasted image 20220823203859.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. 之所以用协程是因为性能高?
        1. 不是协程高,是异步高
      2. 协程比epoll要快?
        1. 两者没有比较的角度。
        2. 管理IO情况: 协程 < reactor/epoll
        3. 从io 管理的角度去看,协程也是使用了epoll 实现的。
      3. 协程轻量级线程?
    17. 泛泛之谈

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

      1. 能做cpu粘合的 只有进程和线程
      2. 协程想做怎么办? 只能借助 多进程,多线程。
        1. 每一个线程一个调度器 特点:简单,不需要加锁
        2. 多个线程公用一个调度器 ; 对与 调度器,入队时候需要加锁。
        3. 每一个进程一个调度器; 简单,
      3. setjmp/longjmp 能否实现多个线程跳转?解答:(12条消息) Setjmp的支持多线程问题_anghlq的博客-CSDN博客

    服务器高级架构体系:https://ke.qq.com/course/417774?flowToken=1010783

  • 相关阅读:
    Leetcode之第294场周赛小记
    入坑 Node.js 1
    用户体验 | 如何度量用户体验?
    需求分析简介
    [AutoSAR系列] 1.1 AutoSar 发展历史
    如何压缩图片大小?图片压缩到200k以下跟我学
    node.js: socket.io服务端和客户端交互示例
    Sqli-labs靶场第19关详解[Sqli-labs-less-19]自动化注入-SQLmap工具注入
    GO面试一定要看看这些面试题
    ARM_LED实现
  • 原文地址:https://blog.csdn.net/qq_29111047/article/details/127042307