思想
相关文章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函数进行处理,这样主线程监听得到连接,交给子线程进行处理;
源码
1 | 相关数据结构 |
1 | //fdfs_trackerd.c->main函数 |
1 | //初始化工作线程 |
1 | //主线程 |
本文作者:
L
本文链接: http://damotiansheng.github.io/uncategorized/2016-12-04/fastdfs之tracker主流程.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: http://damotiansheng.github.io/uncategorized/2016-12-04/fastdfs之tracker主流程.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!