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

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

在 Select 語句的默認(rèn)情況下使用 runtime.Gosched() 是否有意義?

在 Select 語句的默認(rèn)情況下使用 runtime.Gosched() 是否有意義?

Go
30秒到達(dá)戰(zhàn)場 2022-12-19 20:31:42
Go的文檔說Gosched 產(chǎn)生處理器,允許其他 goroutines 運(yùn)行。它不會(huì)暫停當(dāng)前的 goroutine,因此執(zhí)行會(huì)自動(dòng)恢復(fù)?;谠摱x,如果我有一系列同時(shí)創(chuàng)建和執(zhí)行的長時(shí)間運(yùn)行的 go 例程,那么以下列方式編寫 select 語句是否有利:for {    select {        case msg := <- msgch :             fmt.Println(msg)        default:             runtime.Gosched()    }} 我假設(shè)根據(jù)文檔,這段代碼會(huì)導(dǎo)致運(yùn)行更多的 go 例程。我的假設(shè)正確嗎?
查看完整描述

2 回答

?
catspeake

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

不,這里沒有必要,因?yàn)槊慨?dāng) Go 在等待通道或等待 I/O 時(shí),它允許其他 goroutines 自動(dòng)運(yùn)行。自 Go 1.0 以來就是這種情況。

Go 1.2中,Go 運(yùn)行時(shí)的調(diào)度程序會(huì)在您調(diào)用函數(shù)時(shí)添加自動(dòng)搶占點(diǎn)。在此之前,如果你有一個(gè) CPU 綁定循環(huán)(即使有一個(gè)函數(shù)調(diào)用),它可能會(huì)使調(diào)度程序餓死,你可能需要runtime.Gosched.

然后在Go 1.14中,他們使運(yùn)行時(shí)的這方面變得更好,甚至沒有函數(shù)調(diào)用的緊密 CPU 綁定循環(huán)也會(huì)自動(dòng)被搶占。

因此,對(duì)于任何 Go 版本,您都不需要runtime.Gosched在等待通道或 I/O 時(shí)調(diào)用;在 1.14 之前,如果您正在進(jìn)行長時(shí)間運(yùn)行的計(jì)算,您可能想調(diào)用它。但是對(duì)于 Go 1.14+,我不明白為什么你需要手動(dòng)調(diào)用它。


如果我正在審查您的實(shí)際代碼,我建議將其更改為一個(gè)簡單的for ... range循環(huán):

for msg := range msgCh {
    fmt.Println(msg)
}

這將等待每條消息進(jìn)入并打印它,如果/當(dāng)通道關(guān)閉時(shí)停止。switch但是,如果您正在等待另一個(gè)通道或完成信號(hào),例如上下文,您會(huì)想要一個(gè)。是這樣的:

for {

    select {

        case msg := <- msgCh:

            fmt.Println(msg)

        case <-ctx.Done():

            return

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-12-19
?
夢(mèng)里花落0921

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

使用runtime.Gosched()[anywhere] 有意義嗎?

不。使用 Gosched 基本上不需要或不明智。


查看完整回答
反對(duì) 回復(fù) 2022-12-19
  • 2 回答
  • 0 關(guān)注
  • 164 瀏覽

添加回答

舉報(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)