用于解决并发函数的竞争状态问题。。。
package main
import (
"fmt"
"runtime"
"sync"
"sync/atomic"
)
var (
counter int64
wg sync.WaitGroup
mutex sync.Mutex
)
func main() {
wg.Add(2)
fmt.Println("Create Goroutines")
go incCount(1)
go incCount(2)
fmt.Println("Waiting To Finish")
wg.Wait()
fmt.Println("Final Counter: ", counter)
}
func incCount(id int) {
defer wg.Done()
for count := 0; count < 2; count++ {
atomic.AddInt64(&counter, 1)
//value := counter
runtime.Gosched()
//value++
//counter = value
}
mutex.Lock()
{
value := counter
runtime.Gosched()
value++
counter = value
}
mutex.Unlock()
}
package main
import (