前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GRPC-C++源码分析(二)--线程模型

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

原创
作者头像
路小饭
修改2019-04-22 10:36:01
3.9K0
修改2019-04-22 10:36:01
举报
文章被收录于专栏: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文档建议先读一下,然后看一段时间代码再来阅读一下文档。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档