回复了 keepeye 创建的主题: 什么情况下需要用到互斥锁sync.Mutex?

你可以试下酱紫运行

GOMAXPROCS=4 go run main.go

就会和你说的结果不一样的.这个是因为你的golang配置默认为一个线程去跑你所有的goroutine,你所有的goroutine是排队执行的,故你看到输出的是1 2 3.但是如果你设置为多线程执行的时候,那么这样的结果就不一定了,这个时候就需要加上同步锁.才能保证所有的goroutine有序的访问数据

=================================================

好整齐的分割线~~~

补充说明,golang中的++为非原子性操作

回复了 zweite 创建的主题: 关于gorutine

好的,谢谢你们哈,真的是忘了Close了

回复了 zweite 创建的主题: 关于gorutine

这~~~不支持markdown的么

回复了 zweite 创建的主题: 关于gorutine

``` package main

import( "runtime" "fmt" "sync" "net/http" )

func main() { fmt.Println(runtime.NumGoroutine()) waitGroup := sync.WaitGroup{} for i := 0; i < 100; i++ { waitGroup.Add(1) go func(i int, wait *sync.WaitGroup) { defer func(){ wait.Done() }() Println(i) }(i, &waitGroup) } waitGroup.Wait() fmt.Println(runtime.NumGoroutine()) }

func Println(i int) { //println(i) client := http.Client{} , = client.Get("http://www.baidu.com") } ```