协程、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

待更。。。

猜你喜欢

转载自www.cnblogs.com/Smart1san/p/9325696.html