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

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

溫暖工人的Go工人模式

溫暖工人的Go工人模式

Go
飲歌長嘯 2023-07-31 16:03:28
我正在解決一個問題,我有一組“熱情的工人”。這意味著它們被維護在內存中,維護自己的上下文并且是可調用的。我一直在研究各種 Go Worker 實現(xiàn),但都依賴于閉包或返回結果的簡單計算函數(shù)。我找到了一個工作人員的示例,它可以讓我啟動上下文并根據(jù)最大隊列和最大例程限制將任務分配給它們: https: //github.com/cahitbeyaz/job-worker/blob/master/main.go #L131然而,這種模式不允許我從上下文返回結果并將其反饋回來。我還使用 Web 服務器,因此 Web 處理程序必須接收結果并做出相應響應。是否有我應該/可以遵循的特定/更好的模式,或者我可以適應工作人員示例的方法?附言。起初我以為我可以創(chuàng)建一個 ResultQueue,其中結果被推回并由 Web 處理程序使用。不過,我認為隊列的順序不可靠。
查看完整描述

1 回答

?
紅顏莎娜

TA貢獻1842條經(jīng)驗 獲得超13個贊

解決方案非常簡單(我確實把它復雜化了)。不確定這實際上有多有效,但懷疑它并不太糟糕。仍然歡迎提出更好模式的建議:


在作業(yè)定義中聲明一個通道來反饋結果:


type Job struct {

    Request string

    Params  []string

    Result chan Result

}

在你的工作進程中,而不是僅僅返回返回值,而是通過通道傳遞結果結構:


job.Result <- Result{

    Response: result.String(),

    Headers:  []string{},

}

現(xiàn)在,在 Web 處理程序中,只需等待通道即可:


disatcher.jobQueue <- job

result := <- job.Result

愚蠢的我。不知道為什么要花2個小時的努力。:-p 經(jīng)驗教訓:Go 并發(fā)性非常強大。只是別想太多。


查看完整回答
反對 回復 2023-07-31
  • 1 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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