golang多核設置

golang多核設置

單核執行如果for前面或者中間不延遲,主線程不會讓出CPU,導致異步的線程無法執行,

從而無法設置flag的值,從而出現死循環

實例代碼:

package main

import (
	"fmt"
	"runtime"
	_ "time"
)

var (
	flag = false
	str  string
)

func foo() {
	flag = true
	str = "setup complete!"
}

func main() {
	runtime.GOMAXPROCS(1)
	go foo()
	//time.Sleep(1 * time.Second)
	for {
		if flag {
			break
		}
	}
	fmt.Println(str)
}

解決辦法:1、for中間或者前面加延遲    2、runtime.GOMAXPROCS(1)改成runtime.GOMAXPROCS(2)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章