如何鼓励Windows将线程分配到不同的核心?

问题描述 投票:0回答:1

我正在使用 Windows API 编写多线程应用程序,我有操作系统创建的“主”线程来执行用户界面,而“工作”线程在后台执行其工作。当工作线程完成工作时,我的用户界面变得非常慢,初步调查显示我的应用程序仅消耗 25% 的 CPU 功率,并且所有线程(包括由处理 UI 的操作系统创建的第一个线程)都在单核上运行。我知道我可以手动检测核心数量并通过设置关联将线程固定到核心,但我希望 Windows 应该自动执行此操作,而不是在空闲时浪费 75% 的 CPU 功率。是不是我期待太多了? 话题由

CreateThread(NULL, 1000000, ThreadFunction, 0, 0, NULL);

发起
windows multithreading winapi
1个回答
0
投票

根据文档:多线程程序

在多处理器机器上,调度程序可以移动单个线程 到不同的处理器以平衡CPU负载。

就我而言,如果您使用多线程,线程将自动在多核上运行。

并参考文档:线程亲和力

一般应避免设置线程亲和性,因为它可能 干扰调度程序有效调度线程的能力 跨处理器。

© www.soinside.com 2019 - 2024. All rights reserved.