クライアントは、単項モードで実行grpc_connector_connect開始からデフォルト・エグゼキュータとリゾルバ・エグゼキュータスレッドとメインプロセスを作成します

(オリジナル)C / C言語、プラットフォームはdebian10、grpcバージョンです:grpc-C/1.25.0-dev、自分の例の使用例GreeterClient

これは、2つのスレッドがチャネルを作成するには、デフォルト・エグゼキュータおよびメインプロセスリゾルバ・エグゼキュータスレッドを作成作成します

グラフTD; 000(grpc :: InsecureChannelCredentials#credentials.h:91呼び出すInsecureChannelCredentials) - > 001(grpc_impl :: InsecureChannelCredentials#insecure_credentials.cc:59 InsecureChannelCredentialsImplは共有オブジェクトを作成) - > 002(grpc_impl :: InsecureChannelCredentialsImpl 001 :: InsecureChannelCredentialsImpl番号のinsecure_credentials.cc:30 ChannelCredentialsは、親クラスのコンストラクタを呼び出す)002 - > 003(grpc_impl :: ChannelCredentials :: ChannelCredentials#credentials_cc.cc: - :grpc(> 004 25 GrpcLibraryCodegenは003)、親クラスのコンストラクタを呼び出します:GrpcLibraryCodegen :: GrpcLibraryCodegen#grpc_library.h:45 INITを呼び出すGrpcLibraryInterface)004 - > 005(grpc ::内部:: GrpcLibrary :: INIT#1 grpc_library.h: - > 006(grpc_init #init 34呼び出すgrpc_init)005 .ccに:146コールgrpc_iomgr_init)006 - > 007(grpc_iomgr_init番号のiomgr.cc:60呼び出しgrpc_core ::キュータ:: InitAll)007 - > 008(デフォルト・エグゼキュータとリゾルバ・エグゼキュータスレッドを作成する)008 - >009(grpc_iomgr_start番号のiomgr.cc:69呼び出しgrpc_timer_manager_init)009 - > 010(grpc_timer_manager_init番号のtimer_manager.cc:311コールstart_threads)010 - > 011(start_threads番号のtimer_manager.cc:293コールstart_timer_thread_and_unlock)011 - > 012( start_timer_thread_and_unlock番号のtimer_manager.cc:91スタートgrpc_global_timerスレッド)

主なクライアントはgrpc単項モードで実行grpc_connector_connectの処理を開始します

グラフTD; 000(grpc ::内部:: BlockingUnaryCall#1 client_unary_call.h:43) - > 001(grpc ::内部:: BlockingUnaryCallImpl :: BlockingUnaryCallImpl#1 client_unary_call.h:71作成CompletionQueue、コール、CallOpSetオブジェクト、設定CallOpSetオブジェクトパラメータ、コールPerformOps)001 - > 002(grpc ::内部::呼び出す:: PerformOps番号のcall.h:69 PerformOpsOnCallを呼び出す)002 - > 003(grpc_impl ::チャンネル:: PerformOpsOnCall#channel_cc.cc:164 FillOpsを呼び出す)003 - > 004(grpc ::内部:: CallOpSet :: FillOps#call_op_set.h:874コールContinueFillOpsAfterInterception)004 - > 005(grpc ::内部:: CallOpSet :: ContinueFillOpsAfterInterception番号のcall_op_set.h:943 AddOpの6 OPを呼び出し、grpc_call_start_batchを呼び出す)005 - > 006(grpc :: CoreCodegen :: grpc_call_start_batch#core_codegen.cc:113コールgrpc_call_start_batch)006 - > 007(grpc_call_start_batch#のcall.cc:1974コールcall_start_batch)007- - > 008(call_start_batch#1 call.cc:1929 OP-6番目のOPS> OPに応じて、設定パラメータのstream_op、OPS、呼び出し、最後のコールexecute_batch)008 - > 009(execute_batch#call.cc:639コールstart_batch_closureコールバック関数execute_batch_in_call_combiner)009 - > 010(execute_batch_in_call_combiner#call.cc:628コールelem->フィルタ - > start_transport_stream_op_batch)010 - > 011(grpc_call_next_opの#channel_stack.cc:227コールnext_elem->フィルタ - > start_transport_stream_op_batch)011 - > 012(grpc_core ::呼出データ:: StartTransportStreamOpBatch#client_channel.cc:2140 Baのバッチは保留中の参加:PendingBatchesAddとPickSubchannelを呼び出す)012 - > 013(grpc_core ::呼出データ:: PickSubchannel#client_channel.cc:3853コール)はfalseを返しますPickSubchannelLocked 013 - > 014(grpc_core ::呼出データ:: PickSubchannelLocked#client_channel.cc:3870ピッカー_ nullptr、CheckConnectivityStateを呼んで、パラメータは、接続しようとするように設定されている)014 - > 015(grpc_core :: ChannelData :: CheckConnectivityState#client_channel.cc:あるclosure_impl :: closure_wrapper、実際のコールバック)が016 TryToConnectLockedある156クロージャはコールバック関数を作成することです - > 017(:> 016(closure_impl :: closure_wrapper番号のclosure.h - 1956コールバック関数TryToConnectLocked)015をクロージャを作成し、それを呼び出しますgrpc_core :: ChannelData :: TryToConnectLocked#client_channel.cc:1946コールCreateResolvingLoadBalancingPolicyLocked)017 - > 018(grpc_core :: ChannelData :: CreateResolvingLoadBalancingPolicyLocked#client_channel.cc:1596 ResolvingLoadBalancingPolicyコンストラクタを呼び出す)018 - > 019(grpc_core :: ResolvingLoadBalancingPolicy #1 resolving_lb_policy.cc:199はCreateResolver、にupdateStateを作成し、解析を開始しStartLockedを呼び出す)019 - > 020(grpc_core :: AresDnsResolver :: StartLocked#dns_resolver_ares.cc:177コールMaybeStartResolvingLocked)020 - > 021(grpc_core :: AresDnsResolver :: MaybeStartResolvingLocked#1 dns_resolver_ares.cc:409コールStartResolvingLocked)021 - > 022(grpc_core :: AresDnsResolver ::StartResolvingLocked#dns_resolver_ares.cc:420コール)は022 grpc_dns_lookup_ares_locked - > 023(grpc_dns_lookup_ares_locked_impl#grpc_ares_wrapper.cc:625コールがgrpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked)023 - > 024(grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked#のgrpc_ares_wrapper.cc:446 C-アールを使用して最終的には、IPアドレスのDNSを見つけます遅延がゼロの場合、grpc_ares_ev_driver_on_queries_complete_locked呼び出し135件のクエリ)025 - > 026(grpc_ares_ev_driver_on_queries_complete_locked#1 grpc_ares_ev_driver.cc:> 025(grpc_ares_request_unref_locked#1 grpc_ares_wrapper.cc - )grpc_ares_request_unref_locked 024を呼び出す191件のストップ問い合わせ、grpc_timer_cancelを呼び出し、パラメータはquery_timeoutある)026 - > 027(grpc_timer_cancel#timer.cc:35回のコールgrpc_timer_impl->キャンセル)027 - > 028(timer_cancel#timer_generic.cc:474コールtimer->閉鎖対応するコールバック関数)028 - >029(on_ares_backup_poll_alarm_locked#1 grpc_ares_ev_driver.cc:288回のコールがgrpc_ares_ev_driver_unref)029 - > 030(grpc_ares_ev_driver_unref#1 grpc_ares_ev_driver.cc:フリーリソース112とgrpc_ares_complete_request_lockedコール)030 - > 031(grpc_ares_complete_request_locked#1 grpc_ares_wrapper.cc:151コールバック関数に対応するon_doneを呼び出し> 032(grpc_core :: AresDnsResolver :: OnResolvedLocked#dns_resolver_ares.cc - )031:347解析され、)returnResultを呼び出す032 - > 033(grpc_core :: ResolvingLoadBalancingPolicy :: ResolverResultHandler :: returnResult#resolving_lb_policy.cc:87 OnResolverResultChangedLocked呼び出します479 GET lb_policy_name、デフォルトpick_first、lb_policy_name空でない場合は、作成または更新LBポリシー、コールがCreateOrUpdateLbPolicyLockedある)034 - > 035(CreateOrUpdateLbPolicyLocked#のresolving_lb_policy.cc:> 034(OnResolverResultChangedLocked#resolving_lb_policy.cc - )033: 364 lb_policyを作成または更新、UpdateLockedを呼び出す)035 - > 036(PickFirst ::UpdateLocked#1 pick_first.cc:280コールは036)AttemptToConnectUsingLatestUpdateArgsLocked - > 037(PickFirst :: AttemptToConnectUsingLatestUpdateArgsLocked#1 pick_first.cc:236サブチャネルとlatest_update_args_リストはサブチャネル状態GRPC_CHANNEL_READYを持っている場合は、このサブチャネルをチェックし、または選択し、リストを作成サブチャネル0)037 - > 038(AttemptToConnect#client_channel.cc:921コールサブチャネル_-> AttemptToConnect)038 - > 039(サブチャネル:: AttemptToConnect#subchannel.cc:823コールがMaybeStartConnectingLocked)039 - > 040(サブチャネル:: MaybeStartConnectingLocked#subchannel.cc:930コールContinueConnectingLocked)040 - > 041(サブチャンネル:: ContinueConnectingLocked#1 subchannel.cc:connector-により、983セットのgrpc_connect_in_argsパラメータとgrpc_connector_connectを呼び出すには、> vtable->最後のコールchttp2_connector_connectを接続)AttemptToConnectUsingLatestUpdateArgsLocked#1 pick_first.cc:リストはサブチャネル状態GRPC_CHANNEL_READYを持っている場合latest_update_args_サブチャンネルリストを作成し236、その後、このサブチャネルを確認するか、最初の0サブチャネルを選択)037 - > 038(AttemptToConnect#client_channel.cc:921コールサブチャネル_-> AttemptToConnect)038 - > 039(サブチャンネル:: AttemptToConnect#subchannel.cc:823コールはMaybeStartConnectingLocked)039 - > 040(サブチャンネル:: MaybeStartConnectingLocked#1 subchannel.cc:930コールContinueConnectingLocked)040 - > 041(サブチャネル:: ContinueConnectingLocked#1 subchannel.cc:983セットgrpc_connect_in_argsパラメータと最後のコールchttp2_connector_connectを接続connector-> vtable->によって、grpc_connector_connect呼び出します)AttemptToConnectUsingLatestUpdateArgsLocked#1 pick_first.cc:リストはサブチャネル状態GRPC_CHANNEL_READYを持っている場合latest_update_args_サブチャンネルリストを作成し236、その後、このサブチャネルを確認するか、最初の0サブチャネルを選択)037 - > 038(AttemptToConnect#client_channel.cc:921コールサブチャネル_-> AttemptToConnect)038 - > 039(サブチャンネル:: AttemptToConnect#subchannel.cc:823コールはMaybeStartConnectingLocked)039 - > 040(サブチャンネル:: MaybeStartConnectingLocked#1 subchannel.cc:930コールContinueConnectingLocked)040 - > 041(サブチャネル:: ContinueConnectingLocked#1 subchannel.cc:983セットgrpc_connect_in_argsパラメータと最後のコールchttp2_connector_connectを接続connector-> vtable->によって、grpc_connector_connect呼び出します)921调用サブチャネル_-> AttemptToConnect)038 - > 039(サブチャネル:: AttemptToConnect#1 subchannel.cc:823调用MaybeStartConnectingLocked)039 - > 040(サブチャネル:: MaybeStartConnectingLocked#1 subchannel.cc:930调用ContinueConnectingLocked)040 - > 041 (サブチャネル:: ContinueConnectingLocked#1 subchannel.cc:983设置grpc_connect_in_args参数并调用grpc_connector_connect、通过connector-> vtable->接続最后调用chttp2_connector_connect)921调用サブチャネル_-> AttemptToConnect)038 - > 039(サブチャネル:: AttemptToConnect#1 subchannel.cc:823调用MaybeStartConnectingLocked)039 - > 040(サブチャネル:: MaybeStartConnectingLocked#1 subchannel.cc:930调用ContinueConnectingLocked)040 - > 041 (サブチャネル:: ContinueConnectingLocked#1 subchannel.cc:983设置grpc_connect_in_args参数并调用grpc_connector_connect、通过connector-> vtable->接続最后调用chttp2_connector_connect)

おすすめ

転載: www.cnblogs.com/yuyuguang/p/11756500.html