여러 Go 루틴을 컨텍스트와 동기화하는 방법
여러 Go 루틴을 동기화하여 그 중 하나가 반환될 때 종료되도록 허용하려면 컨텍스트는 다음을 제공합니다. 효과적인
설명:
샘플 코드는 두 개의 고루틴을 생성합니다. 이를 동기화하기 위해 context.Context가 시작되어 두 고루틴에 제공됩니다. 각 고루틴은 선택 {} 루프에 들어가 컨텍스트에서 메시지를 수신합니다.
오류가 발생하거나 특정 조건이 충족되는 경우:
코드 샘플:
package main import ( "context" "sync" ) func main() { ctx, cancel := context.WithCancel(context.Background()) wg := sync.WaitGroup{} wg.Add(3) go func() { defer wg.Done() for { select { // msg from other goroutine finish case <-ctx.Done(): // end } } }() go func() { defer wg.Done() for { select { // msg from other goroutine finish case <-ctx.Done(): // end } } }() go func() { defer wg.Done() // your operation // call cancel when this goroutine ends cancel() }() wg.Wait() }
사용의 장점 컨텍스트:
위 내용은 컨텍스트를 사용하여 여러 Go 루틴을 정상적으로 종료하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!