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遍看看输出的效果)

 

转载于:https://www.cnblogs.com/zdz8207/p/golang-learn-20-wg-sync.html

你可能感兴趣的:(golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题)