一、协程
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
待更。。。
原文地址:https://www.cnblogs.com/Smart1san/p/9325696.html
时间: 2024-11-09 06:21:39