簡體   English   中英

在golang中優先使用goroutine

[英]Prioritizing goroutine in golang

我正在用golang寫一個低延遲的網絡,高吞吐量的服務器。 它在主goroutine中具有接受器(接受傳入連接)。 它將傳入的連接傳遞給'n'個工人goroutine。

在這種情況下,為了不刪除連接,我希望接受器goroutine的優先級高於其他goroutine,以便不會刪除連接。 或至少該接受者goroutine不應被其他工人goroutine驅逐。

我該如何確保?

如果您將接受連接的優先級高於“完成工作”,請考慮一段時間后會發生什么。 您將創建工作積壓,同時接受越來越多的連接,從而完成更多工作。 這只會使服務器上的負載更高。

相反,應專注於高效地編寫工作程序代碼,以便快速完成工作,從而釋放資源來處理新連接。

如果您擔心服務器無法處理工作負載,則應考慮限制客戶端的速率。

我在golang上創建了線程池。 這樣應該可以輕松地使某個goroutine優先於其他goroutine。

https://github.com/vijayviji/executor

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM