亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Go 忽略 GOMAXPROCS

Go 忽略 GOMAXPROCS

Go
智慧大石 2021-09-13 20:05:39
我正在嘗試在主線程中與無限循環同時運行 goroutine(go 版本 go1.4.1 darwin/amd64),但我無法使其正常工作。如果我理解正確,如果我指定了 GOMAXPROCS,go 應該將 goroutine 安排到其他線程,但它不會。即使我LockOSThread()在 main 中明確寫入,我仍然看不到輸出。如何讓 go 在單獨的操作系統線程中運行 goroutine?package mainimport(    "fmt"    "time"    "runtime")func main() {    runtime.GOMAXPROCS(runtime.NumCPU() * 8)    go func() {        for {            time.Sleep(1 * time.Second)            fmt.Println("From routine")        }    }()    for {}}
查看完整描述

1 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

問題是當你輸入for{}. 調度器只能在 goroutine 被阻塞或調用另一個函數時才能工作,因此在閉環中調度器無法調度。

在 之前添加一個 time.Sleep(time.Millisecond)for{}它將起作用。

但是,我不知道您這樣做是否只是為了好玩,但是如果您想在 goroutines 工作時永遠等待(或直到其他 gorounties 死鎖或死亡),最好使用select{}它會阻塞不浪費 CPU 周期。


查看完整回答
反對 回復 2021-09-13
  • 1 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號