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)