一:什么是协程:
1, 单线程实现并发
在应用程序里控制多个任务的切换+保存状态
优点: 应用程序级别的速度要远远高于操作系统的切换
缺点: 只有 一个线程,多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地
一旦引入协程,就需要检测单线程下所有的IO行为,实现遇到IO就切换,少一个都不行,因为一旦一个任务阻塞住了,整个线程就阻塞住了。其他的任务即便是可以计算,但也无法运行了。
2,协程的目的
想要在单线程下实现并发
并发指的是多个任务看起来是同时运行的
并发===切换+保存状态
3,用法
二:网路IO 模型
recv/recvfrom:基于网络收数据主要有两种状态:
wait date:等待客户端产生数据------》客户端OS-------》网络------》服务端操作系统缓存(耗时)
copy date:由本地操作系统缓存中 的数据拷贝到应用程序的内存中
send:
只有copy date状态,所以看起来速度很快