在每个工作线程中,都有一个connect queue ,它其实是主线程和工作线程进行通信的中介,其里面的每个节点本质上就是对一个socket进行的封装,到主线程需要把一个任务分发给一个工作线程的时候,就会在对应的工作线程的connect queue中插入一个节点,下面我们简单下
一 节点结构
二 connect queue
三 基本的操作
1 初始化
2 把一个节点插入队列最后
3 从队列的最前面返回一个节点,并在队列中删除
4 新建一个节点
从代码中我们可以看到,主线程是维护着一个空闲的链表,当需要节点的时候,首先从空闲链表中获取,如果空闲中也没有了,那么就进行新的分配,为了提高效率,采用批量分配的方法,除了当前返回的,其他的节点形成链表,挂载到空闲链表中。
5 释放一个节点(放入自由链表中)
通过上面几个操作,主线程和工作线程通信就能实现了。