本文介绍: 被释放的这个文件描述符被复用了,所以我们就会发现当前的这个文件描述符对应的连接的名字和之前的某个文件描述符对应的连接的名字是相同的。个线程,那么把第一个任务给第一个子线程,再把第二个任务给第二个子线程,再把第三个任务给第三个子线程,再把第四个任务给第四个子线程。通过这三个函数,传出的数据,我们就能够知道用于监听的文件描述符lfd它对应的读事件触发了。模块需要在子线程里边运行的,故需要通过子线程去访问线程池,从线程池找出一个子线程,每个子线程都有一个。是属于子线程的,是从子线程传过来的一个反应堆模型的地址。
#CSDN 年度征文|回顾 2023,赢专属铭牌等定制奖品#
一、主线程反应堆模型的事件添加和处理详解
>>服务器和客户端建立连接和通信流程:
基于多反应堆模型的服务器结构图,这主要是一个TcpServer,关于HttpServer,主要是用了Http协议,核心模块是TcpServer。这里边有两种线程:主线程和子线程。子线程是在线程池里边,线程池的每个子线程都有一个反应堆模型,每个反应堆模型都需要有一个TcpConnection。
如果这个反应堆实例所属的线程是主线程,主线程是如何在这个反应堆模型里边工作的呢?在服务器端有一个用于监听的文件描述符ListenFd(简写为lfd),基于lfd就可以和客户端建立连接,如果想要让lfd去工作,就得把它放到反应堆模型里边,首先要对lfd封装成Channel类型,之后添加到TaskQueue这个任务队列里边,接着MainEventLoop就会遍历TaskQueue,取出对应的任务节点(ChannelElement),基于任务节点里边的type对这个节点进行添加/删除/修改操作。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。