思想
相关文章1
相关文章2
主要思想是采用主线程监听并accept连接(代码中tracker_accept_loop函数可以依据全局变量g_accept_threads而开启多个子线程进行监听,默认只有一个主线程监听),得到fd,然后将该fd写入到某一个管道,而子线程(工作线程)(默认4个)监听到管道的另外一端,其处理函数为recv_notify_read,该函数读取管道得到该fd的值,再次将它加入到某个线程(不一定是当前线程)的监听事件中去,处理函数为client_sock_read,该函数当读完客户端完整的请求数据包时会调用tracker_deal_task函数进行处理,当需要进行写时会调用client_sock_write函数进行处理,这样主线程监听得到连接,交给子线程进行处理;