Python——eventlet

eventlet语境下的“绿色线程”普通线程之间的区别:

  1. 绿色线程几乎没有开销,不用像保留普通线程一样保留“绿色线程”,每一个网络连接对应至少一个“绿色线程”;

  2. 绿色线程需要人为的设置使其互相让渡CPU控制权,而不是抢占。绿色线程既能够共享数据结构,又不需要显式的互斥控制,因为只有当一个绿色线程让出了控制权后其他的绿色线程才能访问彼此共享的数据结构。


下图是eventlet中协程、hub、线程、进程之间的关系:

_______________________________________

| python process                        |

|  _________________________________  |

|  | python thread                  |  |

|  |  _____  ___________________  |  |

|  |  | hub | | pool              |  |  |

|  |  |_____| |  _____________  |  |  |

|  |          |  | greenthread |  |  |  |

|  |          |  |_____________|  |  |  |

|  |          |  _____________  |  |  |

|  |          |  | greenthread |  |  |  |

|  |          |  |_____________|  |  |  |

|  |          |  _____________  |  |  |

|  |          |  | greenthread |  |  |  |

|  |          |  |_____________|  |  |  |

|  |          |                  |  |  |

|  |          |        ...        |  |  |

|  |          |___________________|  |  |

|  |                                |  |

|  |_________________________________|  |

|                                      |

|  _________________________________  |

|  | python thread                  |  |

|  |_________________________________|  |

|  _________________________________  |

|  | python thread                  |  |

|  |_________________________________|  |

|                                      |

|                ...                  |

|_______________________________________|

 绿色线程是线程内的概念,同一个线程内的绿色线程之间是顺序执行的,绿色线程之间想要实现同步,需要开发人员在阻塞的代码位置显式植入CPU让渡,此时hub接管进行调度,寻找同一个线程内另一个可调度的绿色线程。注意绿色线程是线程内的概念,不能跨线程同步。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0.1秒,...
    妄心xyx阅读 942评论 0 30
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,503评论 1 15
  • 线程 操作系统线程理论 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有...
    go以恒阅读 1,676评论 0 6
  • 必备的理论基础 1.操作系统作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口。 管理调度进程,并将多个进程对硬件...
    drfung阅读 3,579评论 0 5
  • 林炳文Evankaka原创作品。转载自http://blog.csdn.net/evankaka 本文主要讲了ja...
    ccq_inori阅读 670评论 0 4