>  기사  >  백엔드 개발  >  [바로가기] 동시성 제어 WaitGroup 카운팅 세마포어

[바로가기] 동시성 제어 WaitGroup 카운팅 세마포어

little bottle
little bottle앞으로
2019-04-20 09:26:233435검색

이 기사의 편집자는 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:=&#39;a&#39;;char<&#39;a&#39;+26;char++{
                                fmt.Printf("%c ",char)
                        }   
                }   
        }() 
        go func(){
                defer wg.Done()
                //循环显示三遍字母表
                for count:=0;count<3;count++{
                        //循环显示字母表
                        for char:=&#39;A&#39;;char<&#39;A&#39;+26;char++{
                                fmt.Printf("%c ",char)
                        }   
                }   
        }() 
        //main goroutine等待子goroutine结束
        wg.Wait()
        fmt.Println("\ngoroutine结束")
}

더 많은 Go 언어 튜토리얼을 알고 싶다면 PHP 중국어 웹사이트의 go 비디오 튜토리얼을 따라가세요! ​

위 내용은 [바로가기] 동시성 제어 WaitGroup 카운팅 세마포어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제