有关协程以及Asyncio的学习
Contents
起初是在看
Fluent Python
, 对其中的asyncio实在难以理解, 找了好多文献, 也对其多了解一些.
Coroutine是什么
Youtube上的这个演讲很不错, 希望大家也能看看协程到底和yield是什么关系
https://www.youtube.com/watch?v=M-UcUs7IMIM
又看到了C++与协程相关的文档:
http://cpp.mimuw.edu.pl/files/await-yield-c++-coroutines.pdf
这是一种用户级的线程, 能够有效的提高并发
- 上下文切换也是有开销的, 但相比于线程间的切换, 可以忽略不计
- 但协程之间访问共享变量是十分轻松的, 而且不需要加锁
操作系统
批处理系统: 多道无序调度, 系统利用率高, 吞吐量大, 平均周转时间长.
优点
- 当系统资源忙时可以切换任务运行
- 通过每分钟的监控, 避免了系统资源的闲置
- 通过保持高的利用率, 使得所有任务可以分期偿还
- 允许系统对不同的任务使用不同的优先级
- 普通的程序每次执行一个任务都要运行一次程序(处理逻辑程序), 批处理系统可以做到多个事务只运行一次程序(调度程序).
感觉最后一点有些多余, 减少了主程序的运行次数并没有在本质上减少了程序逻辑的 运行次数.
一点心得
协程的存在在我看来只是为了提高并发量, 也就是吞吐量, 同一时刻可以应对更多的 事件, 可以处理更多用户的请求. 但是真正的运行过程中, 所有事件只是在不停的轮转, 也就是说, 每个事务的平均处理时间延长了.