我試圖運行一個goroutine(go版本go1.4.1達爾文/ amd64)與無限循環同時在主線程中,我不能使它的作品。如果我理解正確,如果我指定GOMAXPROCS,它應該安排一個goroutine到其他線程,但它不會。即使我主要寫明LockOSThread()
我仍然看不到輸出。如何讓在單獨的os線程中運行goroutine?Go忽略GOMAXPROCS
package main
import(
"fmt"
"time"
"runtime"
)
func main() {
runtime.GOMAXPROCS(runtime.NumCPU() * 8)
go func() {
for {
time.Sleep(1 * time.Second)
fmt.Println("From routine")
}
}()
for {}
}
我認爲這裏的問題是,當您輸入{}時,新的goroutine尚未創建(因此無法排除)。調度程序只能工作,然後goroutine被阻塞或調用另一個函數,因此在閉環中調度程序不能調度。在for {}之前添加一個time.Sleep(time.Millisecond),它將起作用。 – siritinga 2015-02-23 13:41:57
@siritinga是的,它有幫助。謝謝。請答覆,以便我可以接受。 – 2015-02-23 13:48:24