이 기사의 편집자는 Go 언어의 동시성 제어에서 WaitGroup 계산 세마포어를 배우고 특정 참조 값이 있는 유스 케이스 코드를 첨부하여 관심 있는 친구들이 와서 배울 수 있도록 안내할 것입니다.
WaitGroup은 실행 중인 고루틴을 기록하고 유지하는 데 사용할 수 있는 계산 세마포입니다. WaitGroup의 값이 0보다 크면 Wait 메서드가 차단됩니다.
Done 메서드를 호출하여 WaitGroup의 값을 줄이고 최종적으로 메인을 해제합니다. function
package main import( "fmt" "runtime" "sync" ) func main(){ //只分配一个逻辑处理器给调度器使用 runtime.GOMAXPROCS(1) //wg用来使main goroutine等待子goroutine结束 var wg sync.WaitGroup //等待两个子goroutine结束 wg.Add(2) fmt.Println("开启goroutine") go func(){ defer wg.Done() //循环显示三遍字母表 for count:=0;count<3;count++{ //循环显示字母表 for char:='a';char<'a'+26;char++{ fmt.Printf("%c ",char) } } }() go func(){ defer wg.Done() //循环显示三遍字母表 for count:=0;count<3;count++{ //循环显示字母表 for char:='A';char<'A'+26;char++{ fmt.Printf("%c ",char) } } }() //main goroutine等待子goroutine结束 wg.Wait() fmt.Println("\ngoroutine结束") }
더 많은 Go 언어 튜토리얼을 알고 싶다면 PHP 중국어 웹사이트의 go 비디오 튜토리얼을 따라가세요!
위 내용은 [바로가기] 동시성 제어 WaitGroup 카운팅 세마포어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!