首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GRPC-C++源码分析(二)--线程模型

接着从线程模型的角度再来认识grpc。先上图

  • 图中绿色的方框代表线程
  • 红色虚线表示新线程的创建
  • 红色方框是公共的list
  • 蓝色字体的方框是“关键字”,标示了第一章网络模型中出现的关键字,方便一一对应
  • DoWork是逻辑处理模块
  1. main是主线程,完成了描述符的bind和listen。创建了两个执行线程default-excutor和reslover-excutor,创建了一个epoll_wait线程SyncRequestThreadManager,SyncRequestThreadManager数量是可配置的
  2. default-excutor线程等待红框grpc_closure_list中的任务,main线程通过GRPC_CLOSURE_SCHED方法将任务放到grpc_closure_list中来激活default-excutor执行任务。default-excutor完成了listenfd和epoll的创建,并将listenfd注册到了epoll中
  3. SyncRequestThreadManager线程用来epoll_wait,处理读、写操作。同时处理请求的具体逻辑
  4. 暂时没发现resolver-executor的很具体的用处。欢迎各路同学前来补充

后续的文章会以上图为基础,介绍每个线程中的关键环节的处理流程。

ps: 看到这儿,如果有跟我一样“丧心病狂”想“受虐”的同学,可以直接跳转https://github.com/grpc/grpc网站开始撸代码了。对了,https://github.com/grpc/grpc/tree/master/doc下面的doc文档建议先读一下,然后看一段时间代码再来阅读一下文档。

下一篇
举报
领券