c-如何在其他内核上运行每个线程?

我有一台udp服务器,可以接收数据并对其进行计算.

每个角色都有两个线程.

在我的CPU中是8多核,我以可变速度发送数据.

但是在最大程度上我使用了ony吗?我的CPU两个核心的百分比50%.如果我发送更多的数据,我的缓冲区将满,并且不使用更多的cpu.

为什么每个核心仅产生50%而不更多?

我认为将这两个角色划分为多核.

我想确保每个人都在另一个核心上.

如何明确选择在其他内核上运行的每个线程?

我的程序在c Visaul Studio 9上运行,并在Windows7上运行,我使用boost :: thread.

解决方法:

调度程序将处理您的线程等将在何处运行.这是特定于操作系统的,因此,如果您想尝试更改代码的运行方式,则需要特定于操作系统的API,该API可让您设置线程相似性等.

另外,取决于您的应用程序的外观,从外观上看它是一个客户端服务器,因此它并不完全受CPU限制.您总共有多少个线程,每个角色提到2个线程?一个线程只能在一个CPU上运行.尝试使工作单元可以真正并行运行,这样它们就可以真正独立运行,理想情况下可以在不同的内核上运行.

操作系统通常会很好地运行您的代码,因为它将具有更好的整体外观.

上一篇:linux-CPU亲和力的优缺点


下一篇:在为Android编码时,有没有办法单独获取设备的每个核心的CPU使用率?