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

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

3.3 小结

还是回到开头CompletionQueue类的构造函数

代码语言:javascript
复制
  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(
            &attributes),
        &attributes, NULL);
    InitialAvalanching();  // reserve this for the future shutdown
  }

看下最终得到的grpc_completion_queue* cq_的结构

  • 明确一点,CompletionQueue中得到的cq_已经不是一个“单纯”的grpc_completion_queue类型,还包括一个cq_next_data类型和一个grpc_pollset类型
  • 整个第3节,除了获得一个cq_变量,更重要的是获得了一个全局变量:grpc_event_engine_vtable* g_event_engine,一起回顾下惯用套路

  • 黑色箭头1-3说明了pollset.cc文件中的grpc_pollset_impl指针是如何被赋值的
  • 红色箭头1-3说明了外部调用时候,是如何最终转到g_event_engine变量中的
举报
领券