コンテキストの使い方.go to signal signal goroutine補完におけるdonemethod ()メソッド
3739 ワード
ここでは、Goroutineで実行されたタスクの完了を通知するために
これはGoroutineで実行されたタスクの完了を合図する便利な方法であり、この文脈では、
context
パッケージの基本的な使用法の例を示します.package main
import (
"context"
"log"
"time"
)
const interval = 500
func main() {
ctx, cancel := context.WithCancel(context.Background())
go func() {
time.Sleep(5 * interval * time.Millisecond)
cancel()
}()
f(ctx)
}
func f(ctx context.Context) {
ticker := time.NewTicker(interval * time.Millisecond)
for {
select {
case <-ticker.C:
doSomething()
case <-ctx.Done():
return
}
}
}
func doSomething() { log.Println("tick") }
Playground linkdoSomething()
の機能が完了する前に、この例ではtime.Sleep(...)
が実行され、cancel
によって作成されたcontext.WithCancel(...)
関数は242479142ループを終了し、終了するチャネルctx.Done()
に値を送信します.for
はコンテクストパッケージdocumentationに記述されているような新しいコンテキスト変数を作成するためのベースとして使用される.これはGoroutineで実行されたタスクの完了を合図する便利な方法であり、この文脈では、
context.Background()
の使用方法に対して強力な代替手段です.Reference
この問題について(コンテキストの使い方.go to signal signal goroutine補完におけるdonemethod ()メソッド), 我々は、より多くの情報をここで見つけました https://dev.to/mcaci/how-to-use-the-context-done-method-in-go-22meテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol