首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(四)--ServerCompletionQueue

    对应《GRPC-C++源码分析(三)--main线程》中的1.1节 初始化ServerCompletionQueue 1 overview 先来看下ServerCompletionQueue的整体结构

    4K50发布于 2019-04-22
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(五)--ServerCompletionQueue续

    如果整个2.1节都没理解也没关系,记住我们有了一个grpc_event_engine_vtable* g_event_engine指针就可以了,这个指针的内容就是上面的static const grpc_event_engine_vtable vtable

    2.1K50发布于 2019-04-22
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(十五)--Start续

    先看PollForWork部分逻辑,PollForWork在for循环中epoll_wait等待client链接

    2K20发布于 2019-04-25
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(十二)--Start

    对应《GRPC-C++源码分析(三)--main线程》中1.6节 这一节可能才是最核心的部分,包括大家理解的怎样注册listen和accept描述符,怎样处理读写事件,怎样处理业务逻辑等等。 grpc_core::Executor::Scheduler(grpc_core::ExecutorJobType::SHORT)), GRPC_ERROR_NONE); 这块代码对应了《GRPC-C 跟踪下grpc_core::Executor::Scheduler可以清晰看到最终调用的是grpc_closure_list_append方法 grpc_server_start-2.jpg 《GRPC-C

    1.5K10发布于 2019-04-23
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(九)--Server

    对应《GRPC-C++源码分析(三)--main线程》中的1.2节 创建Server std::unique_ptr<Server> server(new Server( max_receive_message_size

    1.7K00发布于 2019-04-22
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(十)--Register

    对应于《GRPC-C++源码分析(三)--main线程》中1.3节和1.4节 1 grpc_server_register_completion_queue for (auto it = sync_server_cqs

    1.5K30发布于 2019-04-23
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(十六)--Start续

    GRPC C++部分的源码分析暂时写到这里,后面的分析比较粗糙,我自己也觉得不满意,但限于时间,只能先到这儿了。等闲下来时候或许会把缺失的细节补上。同时也非常欢迎有感兴趣的同学前来补充(可以申请成为此专栏的合作者)。

    1.2K61发布于 2019-04-25
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(十一)--bind&listen

    对应于《GRPC-C++源码分析(三)--main线程》中1.5节 for (auto port = ports_.begin(); port !

    1.6K00发布于 2019-04-23
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(六)--ServerCompletionQueue续

    2.2节中已经看到g_core_codegen_interface的初始化,grpc_completion_queue_factory_lookup在父类CoreCodegenInterface中是个纯虚函数,具体实现在CoreCodegen类中

    2.4K20发布于 2019-04-22
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(三)--main线程

    如果没有特殊喜好,推荐从example/cpp/helloworld/greeter_server.cc开始阅读。前期分析的是同步部分的代码。

    3.8K11发布于 2019-04-21
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(十三)--Start续

    1.1 server_start_listener 这个函数完成了epoll的创建,listen描述符的注册 grpc_server_start-3.jpg server_start_listener最终调用的是tcp_server_start 分段解释下tcp_server_start //tcp_server_posix.cc static void tcp_server_start(grpc_tcp_server* s, grpc_pollset** pollsets,

    1.7K40发布于 2019-04-24
  • 来自专栏C++开源框架源码分析

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

    接着从线程模型的角度再来认识grpc。先上图 grpc-thread线程模型.jpg 图中绿色的方框代表线程 红色虚线表示新线程的创建 红色方框是公共的list 蓝色字体的方框是“关键字”,标示了第一章网络模型中出现的关键字,方便一一对应 DoWork是逻辑处理模块 main是主线程,完成了描述符的bind和listen。创建了两个执行线程default-excutor和reslover-excutor,创建了一个epoll_wait线程SyncRequestThreadManager,SyncReque

    4.3K00发布于 2019-04-19
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(十四)--Start续

    先忽略sync_requests_部分,后边再说,重点看Initialize()里的实现。这里分两部分说,第一部分说整个框架逻辑,第二部分分析具体函数调用逻辑。

    1.4K20发布于 2019-04-24
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(七)--ServerCompletionQueue续

    3.2.1 cq初始化 cq = static_cast<grpc_completion_queue*>( gpr_zalloc(sizeof(grpc_completion_queue) + vtable->data_size + poller_vtable->size())); vtable->data_size为 sizeof(cq_next_data) poller_vtable->size为 grpc_pollset_size 稍微解释下grpc_

    1.5K30发布于 2019-04-22
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(八)--ServerCompletionQueue续

    3.3 小结 还是回到开头CompletionQueue类的构造函数 CompletionQueue(const grpc_completion_queue_attributes& attributes) { cq_ = g_core_codegen_interface->grpc_completion_queue_create( g_core_codegen_interface->grpc_completion_queue_factory_lookup(

    1.8K01发布于 2019-04-22
  • 来自专栏C++开源框架源码分析

    GRPC-C++源码分析(一)--网络模型

    做rpc选型时候,有人说到grpc,想在网上找一些grpc c/c++的源码分析来帮助理解,发现除了官方doc里带的文档外寥寥无几(也可能是自己没找到?)。只能自己捋起袖子“啃一啃”grpc的源码。

    4.8K52发布于 2019-04-18
领券