1
我正在使用go 1.3.3。 我在我的Mac上運行下面的圍棋程序是10.9.2英特爾酷睿i7:Go程序爲每個goroutine創建操作系統線程,即使沒有系統調用
package main
import (
"fmt"
"sync"
)
func justprint(i int, wg *sync.WaitGroup) {
for j := 0; j < 1000000; j++ {
fmt.Printf("Printing %d\n", i)
}
wg.Done()
}
func main() {
var wg sync.WaitGroup
for i := 0; i < 5; i++ {
wg.Add(1)
go justprint(i, &wg)
}
wg.Wait()
fmt.Println("Done!!")
}
活動監視器中我看到,如果我運行這個程序正在催生了8個線程。在goroutine的justprint()中沒有系統調用,所以當我運行這個程序而不是任何去程序創建的默認線程時,我希望沒有創建額外的線程。但隨着我增加去例行調用的次數,OS線程也相應地增加。任何人都可以請幫我理解爲什麼會發生這種情況?
@CharlieTumahai Nah,打印到標準輸出當然使用特殊的'out'和'outs'指令! – fuz 2014-10-17 08:33:40
你是對的...我沒有意識到。非常感謝你清除那個。 – Bharat 2014-10-17 08:37:34