协程IO模型

Posted smart1san

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了协程IO模型相关的知识,希望对你有一定的参考价值。

一、协程

1.定义:

  单线程实现并发,可以再应用程序当中控制多个任务的切换+保存状态。

  优点:在应用程序级别的速度要远远高于操作系统的切换

  缺点:多个任务一旦有一个任务阻塞住了,没有及时切换,整个线程都将阻塞在原地,该线程内的其他任务都不能继续执行了。

所以,在引入协程之后,就需要检测单线程下所有的IO行为,必须实现一旦遇到IO就立即切换,少一个都不行,因为一旦遇到一个任务阻塞住了,其它的任务都将阻塞住,及时其余的线程都是可以计算的,它们也是无法继续执行了。

2.协程的目的

  程序想要能够在单线程下实现并发,并发即指的是多个任务看起来是同时执行的。

  协程的并发=切换+保存运行暂停时的状态

二、IO模型

分类:阻塞IO ( blocking IO)

  非阻塞IO( nonblocking IO)

  IO多路复用( IO multiplexing)

  异步IO( asynchronous IO)

  IO发生时涉及的对象和步骤:

  对于一个network IO (这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的process (or thread),另一个就是系统内核(kernel)。当一个read操作发生时,该操作会经历两个阶段。

#1 等待数据准备 (Waiting for the data to be ready)
#2 将数据从内核拷贝到进程中(Copying the data from the kernel to the process)

1.阻塞IO

 

待更。。。

以上是关于协程IO模型的主要内容,如果未能解决你的问题,请参考以下文章

IO模型和协程

协程IO模型

python_day10 多线程 协程 IO模型

5,线程池,进程池,协程,IO模型

进程池与线程池协程协程实现TCP服务端并发IO模型

Cpython的进程,线程,协程,io模型