特点: 是一个基于libev的并发库 它为各种并发和网络相关的任务提供了整洁的API 基于libev的高效时间循环 基于greenlet的轻量级执行单元 重用Python标准库API内容(比如Event Queues) socket谢童ssl 利用线程池或者c-cares来执行DNS查询
a. 进程 线程 协程
进程:
概念: 进程是正在运行程序的实例
特点: 具有独立地址空间 是操作系统资源分配的基本单元
进程上下文: 进程的物理实体与支持进程运行的物理环境,包括:地址空间 系统栈 打开文件表 。。。
上下文切换: 由一个进程的上下文转到另一个进程的上下文
系统开销: 运行操作系统程序完成系统管理工作所话费的时间和空间
一个进程可以包括多个线程
线程:
- 线程是程序执行的最小单位
- 多线程的优点: 提高程序的并发性
协程:
- 协程可以认为是一种用户态的线程,与系统提供的线程不同点是 他需要主动让出cpu时间,而不是由系统进行调度,即控制权在程序员手上。
优缺点:
- 进程创建销毁成本高
- 线程开销比进程低,但切换成本高,线程间同步变复杂。
- 协程不陷入内核的情况进行上下文切换,没有同步问题,但需要手动切换。
下图解释:
进程是有状态的 刚启动时就绪态,如果进程调度算法调度到这个进程 就会变成执行态。
分配的算法是有时间片的 当时间片使用完 会继续切回就绪态
如果时间片没有使用完 当有IO发生就会阻塞态 阻塞完成 继续切回用户态

b. 阻塞 非阻塞
connect 阻塞做的操作 客户端和服务端做交互的时候,客户端连接服务器,connect时候阻塞会自动打开,会向服务端发送一个序列号,服务端接受后处于阻塞。

数据接受阻塞 应用层recvfrom调用过程中会发生一个系统调用。系统调用会陷入内核里面。如果没有数据准备好,会等待数据直到数据准备好,内核得到数据把数据复制到用户空间,在返回。

原文:http://www.cnblogs.com/oyoui/p/7781505.html