去哪儿面试题 (Golang实现)多线程顺序输出1-75

FredricZhu · 2019-06-06 19:32:39

你看下面这代码,满足了题目中的要求,也做到了简单易懂。可是还是对题目用意一脸懵逼

func main() {
    var wg sync.WaitGroup
    for i := 1; i < 76; i++ {
        wg.Add(1)
        go printN(&wg, i)
        wg.Wait()
    }
}

func printN(wg *sync.WaitGroup, i int) {
    fmt.Println(i)
    wg.Done()
}
#13
更多评论
var a struct {

    Mu sync.RWMutex

    Count int

}


var wg sync.WaitGroup


func main()  {

    wg = sync.WaitGroup{}

    wg.Add(75)

    for i:=1; i<=75; i++ {

        go Add()

    }
    wg.Wait()
}

func Add()  {

    defer wg.Done()

    a.Mu.Lock()

    a.Count++

    fmt.Println(a.Count)

    a.Mu.Unlock()

}
#1

输出结果不稳定,也就是说结果不对

#2