通过协程累加全局变量时,当时获取的数据不正确如test2,需要使用test3进行同步锁的方式进行累加,但是如果开启定时任务进行读取操作,则结果是正确的

func test2()  {

    
    
    for i:=0;i<100;i++  {


        go func() {
            test++
        }()


    }


    fmt.Print(test)


}

func test3()  {


    var wg sync.WaitGroup
    wg.Add(100) // 因为有两个动作,所以增加2个计数

    for i:=0;i<100;i++  {


        go func() {
            test++

            wg.Done()

        }()


    }


    wg.Wait()


    fmt.Print(test)


}
最后修改:2022 年 02 月 25 日 11 : 07 AM
如果觉得我的文章对你有用,请随意赞赏