队列的本质就是环形buff,加了互斥操作,加了阻塞-唤醒.
1.介绍一下环形BUFF
2.阻塞和唤醒
在我们队列中是有一个读list 链表 和 一个写list链表 他们就是用来保存 读 或者 写阻塞 的任务
假设我们 就绪链表中有A 和 B两个任务 他们正常情况下都是轮流运行,
这个时候 A 想读队列,但是没有数据被阻塞
这个时候A 任务就会从就绪链表[1]中剔除出来,挂载到 队列里面的读链表中
某个时候 B开始往 队列中写数据
那这个时候 我们的 B 会唤醒 读list中的A
这个时候我们的A 会从读 list 中剔除 加载到 就绪链表[1]中,A又可以开始重新调度了.