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

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

GOMAXPROCS 已經(jīng)是 2,但程序仍然掛起

GOMAXPROCS 已經(jīng)是 2,但程序仍然掛起

Go
人到中年有點(diǎn)甜 2021-11-22 10:45:12
我已經(jīng)設(shè)置了 runtime.GOMAXPROCS(2),但是這個(gè)程序在輸出一些數(shù)字時(shí)仍然掛起。我可以看到這個(gè)程序使用了高 CPU(超過 100%),但我不明白為什么 for 循環(huán) goroutine 會(huì)使我的程序無法運(yùn)行。linux/amd64 上的 go 版本是 1.4.2,我的電腦有 4 個(gè) CPU。這是代碼:package mainimport "fmt"import "runtime"import "time"func forever() {    for {    }   }func show() {    for number := 1; number < 999999; number++ {        time.Sleep(1000)        fmt.Println(number)    }   }func main() {    runtime.GOMAXPROCS(2)    go show()    go forever()    for {        time.Sleep(1000)    }   } 
查看完整描述

3 回答

?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

沒有必要有一個(gè)忙循環(huán),除了消耗 CPU 時(shí)間之外什么都不做。它不僅消耗了整個(gè) OS 線程,而且 goroutines 是協(xié)作調(diào)度的,它會(huì)干擾運(yùn)行時(shí)的 goroutines。例如,在 Go1.5 上,這通常會(huì)阻止 GC 的 stop-the-world 階段(您可以通過設(shè)置來測試GOGC=off)。


為了讓這個(gè)程序運(yùn)行,你可以在 for 循環(huán)中插入一個(gè)調(diào)度點(diǎn),但最好將它完全刪除。


func forever() {

    for {

        runtime.Gosched()

    }

}


查看完整回答
反對(duì) 回復(fù) 2021-11-22
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

從代碼來看,您似乎想在 go 例程中的 for 循環(huán)中打印數(shù)字。在這種情況下,為什么不使用 channel 來指示 goroutine 何時(shí)通過 for 循環(huán)完成并相應(yīng)地退出 main 函數(shù)。像這樣的東西


package main


import "fmt"

import "runtime"

import "time"



func show(result chan bool) {

    for number := 1; number < 999999; number++ {

        time.Sleep(1000)

        fmt.Println(number)

    }   

    result <- true

}


func main() {

    runtime.GOMAXPROCS(2)

    result := make(chan bool) 

    go show(result)

    <- result


查看完整回答
反對(duì) 回復(fù) 2021-11-22
?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

很好用runtime.Gosched()。但是在 golang 中,time.Duration 以納秒為單位,所以 time.Sleep(1000) 幾乎沒有睡眠。大多數(shù)情況下,您將其視為 Java 中的毫秒。你可以試試

time.Sleep( 1000 * time.MilliSecond )


查看完整回答
反對(duì) 回復(fù) 2021-11-22
  • 3 回答
  • 0 關(guān)注
  • 255 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)