第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

fmt.Print in go routine *may* not output when

fmt.Print in go routine *may* not output when

Go
楊__羊羊 2023-06-05 19:30:12
以下代碼在https://play.golang.org/p/X1-jZ2JcbOQpackage mainimport (        "fmt")func p(s string) {        fmt.Println(s)}func main() {    go fmt.Println("1")    go p("2")    for {}   // infinite loop}使用 golang 1.11 在 Windows 中肯定打印 1 2 但在使用 golang 1.11.4 的 Linux 中絕對不打印任何內容。我能理解前者的行為,但不能理解后者。為什么go程序不是一直運行非主線程?這背后有什么原因嗎?
查看完整描述

1 回答

?
人到中年有點甜

TA貢獻1895條經(jīng)驗 獲得超7個贊

Go Playground 以 GOMAXPROCS=1 運行。在操場上試試這個:


package main


import (

  "fmt"

  "runtime"

)


func main() {

  fmt.Println(runtime.GOMAXPROCS(0))

}

當你在本地運行時,你可能會有更高的 GOMAXPROCS 值。


即使在 playground 上,如果通過引入 Sleep [ https://play.golang.org/p/QquMPZSd6kI ]取消調度主 goroutine,你也可以看到打印工作:


func main() {

    go fmt.Println("1")

    go p("2")


    time.Sleep(time.Second)

    for {}

 }

或者


在開始時更改 GOMAXPROCS:


    runtime.GOMAXPROCS(2)


查看完整回答
反對 回復 2023-06-05
  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號