为了账号安全,请及时绑定邮箱和手机立即绑定

在golang中优先处理goroutine

在golang中优先处理goroutine

Go
qq_笑_17 2023-05-22 15:54:25
我正在用 golang 编写一个低延迟网络、高吞吐量服务器。它在主 goroutine 中有接受器(接受传入连接)。并将传入的连接传递给“n”个 worker goroutine。在这种情况下,为了不断开连接,我希望 acceptor goroutine 优先于其他 goroutine,这样连接就不会断开。或者至少这个 acceptor goroutine 不应该被其他 worker goroutine 驱逐。我怎样才能确保这一点?
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

我在 golang 上创建了线程池。这应该允许人们轻松地将某些 goroutine 优先于其他 goroutine。

查看完整回答
反对 回复 2023-05-22
?
互换的青春

TA贡献1797条经验 获得超6个赞

如果您优先考虑接受连接而不是“做工作”,请考虑随着时间的推移会发生什么。您将创建积压的工作,同时接受越来越多的连接,带来更多的工作要做。这只会使您的服务器上的负载更高。

相反,专注于编写非常高效的工作代码,以便快速完成工作,释放资源来处理新连接。

如果您担心您的服务器无法处理工作负载,您应该考虑对您的客户端进行速率限制。


查看完整回答
反对 回复 2023-05-22
  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信