リモート プロシージャ コール (RPC) のタイムアウト メカニズム
RPC は、ネットワーク経由でリモート プロシージャ コールを行うためのメカニズムです。ネットワークまたはホスト システムの基礎となる詳細。 RPC の重要な側面の 1 つは、完了するまでに時間がかかりすぎる呼び出しをタイムアウトする機能です。 RPC 呼び出しにタイムアウト メカニズムがない場合、デッドロックやリソース不足が発生する可能性があります。
エンドレス RPC 呼び出しを終了する方法
RPC 呼び出しにタイムアウト メカニズムがある場合タイムアウト メカニズムが組み込まれておらず、呼び出そうとしているサーバーが閉じている場合は、チャネルを使用してタイムアウト パターンを実装できます。
このパターンを使用したコード スニペットの例を次に示します。
<code class="go">import "time" c := make(chan error, 1) go func() { c <- client.Call("Service", args, &result) } () select { case err := <-c: // use err and result case <-time.After(timeoutNanoseconds): // call timed out }</code>
select ステートメントは、client.Call のいずれかが行われるまでブロックされます。が返されるか、指定されたタイムアウトが経過します。タイムアウトが発生した場合は、通話がタイムアウトになったとみなして、適切なアクションを実行できます。
以上が無限の RPC 呼び出しに対するタイムアウト メカニズムを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。