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

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

當(dāng)更多的工人被顯式調(diào)用時(shí),gomaxprocs 被忽略

當(dāng)更多的工人被顯式調(diào)用時(shí),gomaxprocs 被忽略

Go
交互式愛情 2022-10-04 19:35:30
我該如何使用戈麥斯?下面的代碼設(shè)置了 gomaxprocs,但隨后會(huì)生成更多的工作線程。我預(yù)計(jì)有2個(gè)進(jìn)程,但仍有5個(gè)仍在運(yùn)行。package mainimport (    "fmt"    "runtime"    "sync"    "time")func worker(i int, waiter chan struct{}, wg *sync.WaitGroup) {    defer func(waiter chan struct{}, wg *sync.WaitGroup) {        fmt.Printf("worker %d done\n", i)        wg.Done()        <-waiter    }(waiter, wg)    fmt.Printf("worker %d starting\n", i)    time.Sleep(time.Second)}func main() {    runtime.GOMAXPROCS(2)    var concurrency = 5    var items = 10    waiter := make(chan struct{}, concurrency)    var wg sync.WaitGroup    for i := 0; i < items; i++ {        wg.Add(1)        waiter <- struct{}{}        go worker(i, waiter, &wg)    }    wg.Wait()}
查看完整描述

1 回答

?
BIG陽

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

對于 C/C++程序員認(rèn)為的線程,Go 有三個(gè)概念:G、P、M。

  • M = 實(shí)際螺紋

  • G = 戈魯廷斯(即程序中的代碼)

  • P = 處理器

沒有用于限制 Ms 數(shù)量的 Go API,也沒有用于限制 Gs 數(shù)量的 API - 每次調(diào)用都會(huì)創(chuàng)建一個(gè)新的 API。事情是用來限制Ps的。go func(...)GOMAXPROCS

每個(gè) P 用于跟蹤某些正在運(yùn)行的戈魯廷的運(yùn)行時(shí)狀態(tài)。

你應(yīng)該把它想象成致力于運(yùn)行戈魯廷的女士的峰值數(shù)量。(還有其他一些 Ms 不運(yùn)行 Goroutines,但處理垃圾回收任務(wù),并用作模板線程,用于根據(jù)需要?jiǎng)?chuàng)建新 Ms 等。一些 Ms 致力于保持運(yùn)行時(shí)狀態(tài),而某些 Go 代碼在系統(tǒng)調(diào)用中被阻止。GOMAXPROCS

因此,就程序中的代碼而言,是其Go代碼執(zhí)行的并行度的約束。當(dāng)一個(gè)正在運(yùn)行的戈魯廷到達(dá)它被阻塞的點(diǎn)時(shí),它被停放,其P用于恢復(fù)執(zhí)行其他一些未被阻塞的戈魯廷。GOMAXPROCS


查看完整回答
反對 回復(fù) 2022-10-04
  • 1 回答
  • 0 關(guān)注
  • 86 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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