在golang中优先处理goroutine
Prioritizing goroutine in golang
我正在用 golang 编写一个低延迟网络、高吞吐量服务器。它在主 goroutine 中有接受器(接受传入连接)。并将传入的连接传递给 'n' 个 worker goroutines。
在这种情况下,为了不断开连接,我希望 acceptor goroutine 优先于其他 goroutine,这样连接就不会断开。或者至少这个 acceptor goroutine 不应该被其他 worker goroutines 驱逐。
我怎样才能确保这一点?
如果您优先接受连接而不是 "doing the work",请考虑随着时间的推移会发生什么。您将创建积压的工作,同时接受越来越多的连接,带来更多的工作要做。这只会让你的服务器负载更高。
相反,专注于编写非常高效的工作代码,以便快速完成工作,释放资源来处理新连接。
如果您担心您的服务器无法处理工作负载,您应该考虑对您的客户端进行速率限制。
我已经在 golang 上创建了线程池。这应该允许人们轻松地将某些 goroutine 优先于其他 goroutine。
我正在用 golang 编写一个低延迟网络、高吞吐量服务器。它在主 goroutine 中有接受器(接受传入连接)。并将传入的连接传递给 'n' 个 worker goroutines。
在这种情况下,为了不断开连接,我希望 acceptor goroutine 优先于其他 goroutine,这样连接就不会断开。或者至少这个 acceptor goroutine 不应该被其他 worker goroutines 驱逐。
我怎样才能确保这一点?
如果您优先接受连接而不是 "doing the work",请考虑随着时间的推移会发生什么。您将创建积压的工作,同时接受越来越多的连接,带来更多的工作要做。这只会让你的服务器负载更高。
相反,专注于编写非常高效的工作代码,以便快速完成工作,释放资源来处理新连接。
如果您担心您的服务器无法处理工作负载,您应该考虑对您的客户端进行速率限制。
我已经在 golang 上创建了线程池。这应该允许人们轻松地将某些 goroutine 优先于其他 goroutine。