golang學習筆記20 一道考察對並發多協程操作一個共享變量的面試題


golang學習筆記20 一道考察對並發多協程操作一個共享變量的面試題

下面這個程序運行的能num結果是什么?

package main

import (
	"fmt"
	
	"sync"
)

var num int64 = 0
var max = 10000
var wg sync.WaitGroup

func main() {
	wg.Add(2)
	go addNum()
	go addNum()
	wg.Wait()
	fmt.Printf("num=%d \n", num)
}
func addNum() {
	for i := 0; i < max; i++ {
		num++
	}
	wg.Done()
}

  這道題考察的是對並發的理解,主要是並發多協程操作一個共享變量的問題

注:需要多運行幾次才能看到比較明顯的結果。(可以弄個for循環執行100遍看看輸出的效果)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM