zoukankan      html  css  js  c++  java
  • 协程

    1.什么是协程

    1. 协程,又称微线程,纤成,协程是一种用户态的轻量级线程·
    
    2. 线程的切换会保存到CPU的栈里,协程拥有自己的寄存器上下文和栈。
    
    3. 协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈
    
    4. 协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态
    
    5. 协程最主要的作用是在单线程的条件下实现并发的效果,但实际上还是串行的(像yield一样)
    

    2.协程缺点(无法利用多核资源)

    协程的本质是个单线程,它不能同时将 单个CPU 的多个核用上协程需要和进程配合才能运行在多CPU上线程阻塞(Blocking)操作(如IO时)会阻塞掉整个程序
    

    3.协程为何能处理大并发1:Greenlet遇到I/O手动切换

    1. 协程之所以快是因为遇到I/O操作就切换(最后只有CPU运算)
    2. 用greenlet实现手动的对各个协程之间切换
    
    

    4. 协程为何能处理大并发2:Gevent遇到I/O自动切换

    1. 其实Gevent模块仅仅是对greenlet的再封装,将I/O间的手动切换变成自动切换
    2. Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程
    3. Gevent原理是只要遇到I/O操作就会自动切换到下一个协程
  • 相关阅读:
    TP
    vim manual 个人笔记
    关于动画属性
    过渡
    关于 css3 的filter属性
    html 中行内元素和块级元素区别
    JS以不同的格式保存文件内容
    64位Kali无法顺利执行pwn1问题的解决方案
    鱼龙混杂 · 数据结构学习笔记(01)
    Terminal(终端) 在 OS X下如何快速调用
  • 原文地址:https://www.cnblogs.com/wonderlandlove/p/12828311.html
Copyright © 2011-2022 走看看