首页 > 编程语言 >协程设计原理与汇编实现

协程设计原理与汇编实现

时间:2022-08-15 22:47:18浏览次数:90  
标签:汇编 协程 epoll send 跳转 原理 recv wait

协程:

1.为什么会有协程,解决什么问题?

2.原语

3.协程的切换

4.协程结构体定义

5.调度的策略

6.调度器如何定义

7.协程api的实现,hook

8.多核模式

9.如何测试

 

同步的编程方式,异步的性能

如果检测io与读写io在一个流程里面就是同步,如果不在一个流程里面就是异步

//同步
func (){

  while(1){

    epoll_wait();

    for(;;){

      recv();
      send();
    }
  }

}

 

 

 

//伪代码,异步

thread_cb(void *arg){
    recv();
    send();
}
func () {
    while(1) {
         epoll_wait();
         for(;;) {
              push_other_thread(); 
        }
    }
}

避免不了一个问题:同一个fd会在不同的线程中操作,解决是在recv前在封装一个poll,检测是否真的可读

 

协程是在send之后,将fd加入到epoll,然后让出到epoll_wait,这时有两个可能1、epoll_wait没有就绪的,在恢复到send。2、如果有就绪的,处理fd,recv。

goto只能在函数内部跳转。栈内跳转

 

有三种跳转方式:

1、setjmp/longjmp

2、ucontext

3、汇编

线程切换:先保存当前寄存器的值(save),然后切换到下一个线程(load),相当于保留现场和恢复现场

协程也一样,yield和resume   

协程作为网络io合适,做页面刷新,文件就不合适

 

标签:汇编,协程,epoll,send,跳转,原理,recv,wait
From: https://www.cnblogs.com/cuijy1/p/16425359.html

相关文章

  • Nacos 实现原理详解
    Nacos架构  ProviderAPP:服务提供者ConsumerAPP:服务消费者NameServer:通过VIP(VirtualIP)或DNS的方式实现Nacos高可用集群的服务路由NacosServer:Nacos服......
  • HTTPS的数字证书验证原理
    网络请求方式通常分为两种,分别是HTTP请求和HTTPS请求,其中HTTP的传输属于明文传输,在传输的过程中容易被人截取并且偷窥其中的内容,而HTTPS是一种在HTTP的基础上加了SSL/TLS层......
  • Digester解析xml原理
    Tomcat内部是使用Digester来解析xml文件的,将xml转化为java对象。digester底层是基于SAX+事件驱动+栈的方式来搭建实现的,SAX主要用来解析xml,事件驱动主要是在解析的过程中......
  • 《x86汇编语言 从实模式到保护模式》第9章 RTC时间更新过快解决方法
    将这两项设置成我这个,保存一下,以便日后使用。 ......
  • jsp_概念和原理
    jsp_概念概念:javaserverPages:java服务器端页面可以理解为:一个特殊的页面其中既可以指定定义html标签又可以定义java代码用于简化书写jsp和HTMl的区别HTML......
  • Vue.nextTick的使用的原理
    我们都知道JS有一个处理事件的机制也就是事件循环机制以及同步和异步事件循环的顺序,决定js代码的执行顺序。事件循环如下在执行完微任务之后才会去进行下一个宏......
  • JSP概念和JSP原理
    JSP入门学习概念:JavaServerPages:Java服务器端页面可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码用于简化书写<html><head>......
  • vlan技术前提下,交换机原理?
    转发机制、对有无目标mac的帧操作、广播组播帧、同一接口学习多个mac基于源MAC地址学习,基于目标MAC地址转发对于没有目标MAC地址表项的帧,向本VLAN的其他所有接口转发......
  • LyScript 批量搜索反汇编特征
    LyScript插件实现对特定汇编指令片段的批量搜索功能,用户传入一个汇编指令列表,然后循环搜索该列表内的所有指令特征,如果找到了,则返回该指令的内存地址。得到汇编指令机器......
  • Session原理分析以及Session的细节
    Session原理分析session的实现是依赖于cookie的当客户端第一次请求会话对象时,服务器会创建一个Session对象,并为该Session对象分配一个唯一的SessionID(用来标识这......