动态

详情 返回 返回

golang 啓動3個協程交替打印abc10次 - 动态 详情

var ch1, ch2, ch3 = make(chan struct{}), make(chan struct{}), make(chan struct{})
    var wg sync.WaitGroup
    wg.Add(3)
    go func(s string) {
        defer wg.Done()
        for i := 1; i <= 10; i++ {
            <-ch1
            fmt.Print(s)
            ch2 <- struct{}{}
        }
        <-ch1
    }("A")
    go func(s string) {
        defer wg.Done()
        for i := 1; i <= 10; i++ {
            <-ch2
            fmt.Print(s)
            ch3 <- struct{}{}
        }
    }("B")
    go func(s string) {
        defer wg.Done()
        for i := 1; i <= 10; i++ {
            <-ch3
            fmt.Println(s)
            ch1 <- struct{}{}
        }
    }("C")
    ch1 <- struct{}{}
    wg.Wait()
user avatar huli_5f06b98ab5a44 头像 azonips314 头像 jiuliangxiaodeshuanggang 头像
点赞 3 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.