gpt4 book ai didi

multithreading - 在处理网络连接时,有没有办法利用多核?

转载 作者:行者123 更新时间:2023-12-02 04:08:34 24 4
gpt4 key购买 nike

我们在做网络编程的时候,无论你使用多进程、多线程还是选择/轮询(epoll),只有一个进程/线程来处理接受同一个端口的连接。如果你想利用多核,你需要创建工作进程/线程。但是边界处理网络连接呢?在处理网络连接时,有没有办法利用多核?

我找到了一些 Material 。这似乎很难完成。
三向握手将由内核隐式完成。并且在smp结构中操作系统会被划分为几个临界区。同一个临界区不能同时在多个核心上运行。

最佳答案

所有在 PC 硬件上运行的现代操作系统都已经针对多核 CPU 进行了高度优化的网络堆栈。例如,将数据插入和传出网卡的数据包处理代码将独立于 TCP/IP 堆栈代码,因此硬件中断可以在不干扰 TCP 代码的情况下运行完成。

然而,对于大多数现实世界的应用程序来说,大部分工作都在数据包之间。进来的数据要经过处理,出去的数据要生成。这取决于应用程序代码,并且该代码可以通过使用多个线程或多个进程来利用多个内核。您如何做到最好取决于应用程序和操作系统。例如,Windows 有 I/O completion ports它将作业发现与多线程作业调度相结合。 Linux 有 epoll .

关于multithreading - 在处理网络连接时,有没有办法利用多核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6327881/

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