【发布时间】:2011-11-13 16:36:48
【问题描述】:
我正在编写这个 c++ 应用程序,它使用 Boost 线程和 SFML 来使用 TCP 和 UDP 套接字。我有一个 4 代码 Xeon CPU,但似乎我只使用 1 个内核。如何访问全部 4 个内核?
【问题讨论】:
标签: multithreading boost multicore sfml
我正在编写这个 c++ 应用程序,它使用 Boost 线程和 SFML 来使用 TCP 和 UDP 套接字。我有一个 4 代码 Xeon CPU,但似乎我只使用 1 个内核。如何访问全部 4 个内核?
【问题讨论】:
标签: multithreading boost multicore sfml
线程分配取决于您使用的操作系统。另外请准确说出“但我似乎只使用 1 个核心”是什么意思。
但是你可以做一些研究:
如果您使用的是 Windows,则有一个不错的程序可以显示您的应用程序中运行了多少线程,哪个线程与特定的硬件核心和使用情况相关联(单击属性和线程选项卡): http://technet.microsoft.com/en-us/sysinternals/bb896653
您的线程实际执行了什么样的工作?也许你有一些竞争条件,比如线程饥饿等。
AFAIK 仅仅因为所有数据都通过内核驱动程序传输并在最后被序列化,所以让多个线程发送一些数据是没有意义的。
BR
【讨论】:
Thread assignment is up to the OS you are using - 不完全正确(你可以设置线程关联,给定足够的权限)