亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Go:并發和優先級排序

Go:并發和優先級排序

Go
慕的地6264312 2021-10-11 10:47:11
我有 n ~=1000 個作業在外部服務器上運行,每個作業都與我的程序中的一個 go-routine 相關聯。我在不同的時間開始工作,它們大致按照開始的順序完成,但這并不能保證。我從每個 go-routine 輪詢其相應的服務器作業:完成了嗎?我的出站請求是有速率限制的,所以我需要巧妙地進行輪詢。我想優先考慮由更早開始工作的 go-routines 進行輪詢。我現在這樣做的方式是,我有一個代表我的速率限制的通道,所有 go-routine 都等待從這個通道獲取一個值,輪詢他們的服務器,然后放回一個值。但是,不能保證這些 go-routines 甚至會隨機讀?。▋炏燃夗樞蛞俚枚啵?,因為在同一通道上讀取多個 go-routines 的行為是未定義的。有人可以指導我如何思考這個問題嗎?它不必是特定的,但我不確定我會在 Go 中使用哪些原語和數據結構來按優先級順序從通道讀取,同時考慮到速率限制。這似乎很困難,因為各個 goroutine 不知道整個程序的狀態——它們的哪些同事例程最先啟動,等等。他們應該只知道是否應該在任何給定時間輪詢他們的服務器。謝謝你。
查看完整描述

1 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

您聽說過加權公平隊列嗎?這是一種成熟的調度方式,可以預測理論上應該首先完成哪個作業,哪個作業應該被服務。


查看完整回答
反對 回復 2021-10-11
  • 1 回答
  • 0 關注
  • 293 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號