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

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

Golang 工作線程池 - 從作業(yè)內(nèi)部排隊(duì)新作業(yè)

Golang 工作線程池 - 從作業(yè)內(nèi)部排隊(duì)新作業(yè)

Go
繁花不似錦 2022-09-05 10:46:44
我正在嘗試同時(shí)從一組存儲(chǔ)桶中構(gòu)建一棵樹(shù),并且鑒于worker模式在go中似乎非常流行,我嘗試將其應(yīng)用于我的問(wèn)題?;旧?,我啟動(dòng)了一定數(shù)量的工人,讓他們收聽(tīng)共享的工作渠道。然后,第一個(gè)工作線程接收樹(shù)根節(jié)點(diǎn)作為第一個(gè)作業(yè),并在分支和創(chuàng)建另外 2 個(gè)作業(yè)之前用相關(guān)信息填充它。然后,這些作業(yè)應(yīng)該分布在其他工作者之間,然后這些工作線程將遞歸地生成更多的工作,直到整個(gè)樹(shù)被構(gòu)造出來(lái)。我的幼稚方法的簡(jiǎn)化表示類似于以下內(nèi)容:func workers(count int) {    wg := sync.WaitGroup{}    wg.Add(count)    jobs := make(chan job)    for i := 0; i < count; i++ {        go func() {            // worker waits for job and then executes it            for j := range jobs {                processJob(j, jobs)            }            wg.Done()        }()    }    // start with some initial job    jobs <- job{}    wg.Wait()}func processJob(j job, jobs chan job) {    // jobs channel is closed when tree is finished    if done {        close(jobs)    }    // Do some more irrelevant stuff    // sometimes 2 new jobs result from this one    jobs <- job{}    jobs <- job{}    // but that doesn't work, if all workers try to send and no one receives}問(wèn)題是,我無(wú)法從 1 個(gè)作業(yè)中添加 2 個(gè)新作業(yè),因?yàn)樵谀承r(shí)候,每個(gè)工作線程都會(huì)忙于嘗試將作業(yè)發(fā)送到通道,并且沒(méi)有工作線程位于接收端。任何人都可以為我指出一個(gè)優(yōu)雅的解決方案的方向,還是我對(duì)這個(gè)問(wèn)題的整個(gè)方法都是錯(cuò)誤的?
查看完整描述

1 回答

?
莫回?zé)o

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

如果沒(méi)有其他工作人員準(zhǔn)備好處理作業(yè),請(qǐng)使用當(dāng)前工作人員:


func doJob(j job, jobs chan job) {

    select {

    case jobs <- j:

    default:

        // Send to jobs was not ready, do the job

        // in the current worker.

        processJob(j, jobs)

    }

}

將 send 語(yǔ)句替換為調(diào)用 。jobs <- job{}doJob(job{}, jobs)


使用緩沖通道讓工作線程保持忙碌:


jobs := make(chan job, N)

調(diào)整,直到找到一個(gè)工作人員大多忙的值。的一個(gè)好的起始值是 。此調(diào)整不是防止死鎖所必需的。當(dāng) N 等于零時(shí),程序不會(huì)死鎖。NNcount


查看完整回答
反對(duì) 回復(fù) 2022-09-05
  • 1 回答
  • 0 關(guān)注
  • 79 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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