以前の例では、シンプルなHTTP サーバーの設定について説明しました。HTTP サーバーは、キャンセルの制御に `context.Context` を使用する方法を示すのに便利です。`Context` は、期限、キャンセル シグナル、その他の要求スコープ値を、API の境界やゴルーチン間で伝達します。 |
![]() ![]()
|
|
|
|
|
`context.Context` は、`net/http` マシナリーによって各要求に対して作成され、`Context()` メソッドで利用できます。 |
|
クライアントに返信を送信する前に数秒待機します。これは、サーバーが一部作業を行っていることをシミュレーションできます。作業している間、コンテキストの `Done()` チャネルに注意して、作業をキャンセルし、できるだけ早く戻す必要があるというシグナルを監視します。 |
|
コンテキストの `Err()` メソッドは、`Done()` チャネルがクローズされた理由を説明するエラーを返します。 |
|
|
|
以前と同様、`"/hello"` ルートにハンドラを登録し、サービスの開始を行います。 |
|
バックグラウンドでサーバーを実行します。 |
|
`/hello` へのクライアント要求をシミュレートし、キャンセルをシグナルするため、起動後にすぐに Ctrl+C を押します。 |
|
次の例: プロセスをスポーンする。