gpt4 book ai didi

multithreading - libevent/epoll工作线程数?

转载 作者:行者123 更新时间:2023-12-03 13:17:32 25 4
gpt4 key购买 nike

我正在遵循this示例。 Line#37表示工作线程数应等于cpu核心数。为什么?

如果有1万个连接,而我的系统有8个核心,这是否意味着8个辅助线程将处理1万个连接?为什么我不应该增加这个数字?

最佳答案

您的问题甚至比您想的要好! :-P

如果使用libevent执行联网,则可以在套接字上执行非阻塞I/O 一个线程可以做到这一点(使用一个内核),但这会导致CPU利用率不足。

但是,如果您“重载”了文件I/O ,则内核没有且没有非阻塞接口(interface)。 (许多系统根本不做任何事情,其他系统在该字段中正在进行一些半熟的事情,但是不可移植。–Libevent不使用它。)–如果文件I/O在程序中造成瓶颈/test,那么更多的线程才有意义!如果使用了硬盘,并且I/O调度程序正在对请求进行重新排序以免发生磁盘头移动等情况,则将取决于调度程序考虑多少请求以使其发挥最佳性能。 100个待处理的请求可能比8个更好。

为什么不增加线程号?

如果完成了非阻塞I/O:所有内核都在使用thread-count = core-count。更多线程仅意味着更多线程切换而没有 yield 。

对于阻止I/O:您应该增加它!

关于multithreading - libevent/epoll工作线程数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20915738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com