我有一个 udp 服务器接收数据并计算它。
每个角色我都有两个线程。
我的CPU是8个多核,我以不同的速度发送数据。
但最多我只使用了 cpu 两核 50% 的 %14%。如果我发送更多的数据值,我的缓冲区将填满并且不会使用更多的CPU。
为什么每个核心只出现 50% 而不是更多?
我想把这两个角色划分给多核。
我想确保每个核心都在其他核心上。
我如何显式选择在其他核心上运行的每个线程?
我的程序在 c++ Visual Studio 9 上编写并在 Windows 7 上运行,我使用 boost::thread 。
调度程序将处理线程等的运行位置。这是特定于操作系统的,因此如果您想尝试改变代码的运行方式,您将需要一个特定于操作系统的 API,它可以让您设置线程亲和力等。
另外,取决于您的应用程序是什么样的,从外观上看它是一个客户端服务器,所以它不完全受 CPU 限制。您总共有多少个线程,您提到每个角色 2 个?一个线程只能运行在一个CPU上。尝试使工作单元能够真正并行运行,这样它们就可以真正独立运行,最好是在不同的内核上运行。
操作系统通常会很好地运行您的代码,因为它会有更好的整体情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)