duangan4070 2018-12-21 20:09
浏览 106
已采纳

在golang中优先使用goroutine

I'm writing a low latency network, high throughput server in golang. It has acceptor in the main goroutine (which accepts incoming connections). And it passes the incoming connections to 'n' number of worker goroutines.

In this case, to not drop connections, I want the acceptor goroutine to be prioritized over other goroutines so that connections won't be dropped. Or atleast this acceptor goroutine should not get evicted by other worker goroutines.

How can I ensure this?

  • 写回答

2条回答 默认 最新

  • douwa6220 2018-12-30 22:29
    关注

    I have created threadpools on golang. This should allow easily one to prioritize certain goroutines over others.

    https://github.com/vijayviji/executor

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • doucan4873 2018-12-22 16:58
    关注

    If you prioritize accepting connections over "doing the work", consider what happens over time. You will create a backlog of work, while accepting more and more connections, bringing even more work to be done. This just makes the load on your server higher.

    Instead, focus on writing your worker code to be very efficient, so that the work will be completed quickly, freeing up resources to handle new connections.

    If you are concerned about your server being unable to handle the workload, you should think about rate-limiting your clients.

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 用C语言解决编程问题
  • ¥15 unity硬件连接与使用
  • ¥15 鱼缸加热棒的数据分析或者实际案例也行
  • ¥15 postgresql11安装完成后,pgadmin无法启动
  • ¥15 (标签-无人机|关键词-Matlab代码)
  • ¥15 执行shell脚本提示参数太多
  • ¥15 困扰好久了,电脑的串口调试助手向单片机发送一个字符(如:字符‘1’到‘8’),单片机点亮对应的灯(如发送字符‘2’则点亮第2个灯)并给电脑回复信息:已点亮第x个灯(其中 x 要替换成对应的数字)
  • ¥15 求减少这个c++程序内存的解决方案
  • ¥30 改正代码,错误比较多
  • ¥15 vue3 keepalive