网络编程中协程的作用
记住一句话即可:协程可以实现同步的编程方式,性能和多线程异步回调相似。
实现上下文切换的方式
- setjump/long jump
- ucontext
- 汇编代码
协程中需要包含哪些成员?
- 寄存器组
- 入口函数
- 函数参数
- 返回值
- 栈地址(共享栈和独立栈)
- 栈大小(4K)
- 协程状态
协程不同状态使用什么数据结构
- 新建/就绪:队列
- 等待:红黑树
- 睡眠:红黑树
这里为什么不用小顶堆?小顶堆适合取出次数小的任务,红黑树是有序的,在大量超时取出的情况下效率低。
多核模式下调度器怎么设计?
- 多线程:如果多个线程公用一个调用器,使用调度器的时候需要加锁(涉及红黑树、队列的操作)
- 多进程:每个核绑定一个进程