码迷,mamicode.com
首页 > 其他好文 > 详细

协程、IO模型

时间:2018-07-17 20:43:08      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:中控   syn   操作系统   检测   多路复用   举例   有一个   分类   需要   

一、协程

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模型

标签:中控   syn   操作系统   检测   多路复用   举例   有一个   分类   需要   

原文地址:https://www.cnblogs.com/Smart1san/p/9325696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!