C++ C++\Win32以低优先级模式运行应用程序/线程?

C++ C++\Win32以低优先级模式运行应用程序/线程?,c++,multithreading,winapi,C++,Multithreading,Winapi,我正在使用CreateThread作为我的线程 一个线程占用了大量cpu%,我需要减少这一占用 是的,我知道我可以调用Sleep(),但在这种情况下,实现起来很复杂 如何设置线程以低优先级运行?如果不可能,那么如何以低优先级运行应用程序?使用SetThreadPriority函数,有关详细信息,请搜索msdnSetThreadPriority将设置各个线程的优先级。或者,如您所问,您可以使用SetPriorityClass更改进程的基本优先级。正是这个基本优先级,加上线程优先级,才得到了实际的线

我正在使用CreateThread作为我的线程

一个线程占用了大量cpu%,我需要减少这一占用

是的,我知道我可以调用Sleep(),但在这种情况下,实现起来很复杂


如何设置线程以低优先级运行?如果不可能,那么如何以低优先级运行应用程序?

使用SetThreadPriority函数,有关详细信息,请搜索msdn

SetThreadPriority将设置各个线程的优先级。或者,如您所问,您可以使用SetPriorityClass更改进程的基本优先级。正是这个基本优先级,加上线程优先级,才得到了实际的线程优先级。

谢谢,奇怪的是,即使设置为空闲,CPU%也没有帮助。那么,线程在做什么呢?如果是CPU循环,它将占用一个完整的内核,除非其他优先级更高的线程需要该内核。是的,你对CPU的分配有一个基本的误解。如果没有其他线程需要CPU,那么即使是空闲优先级线程也会消耗100%的可用CPU周期(每个核心、每个线程)通常足以大大降低使用率。实现起来有多困难?“一个线程占用了大量cpu%,我需要减少它。”为什么?如果它正在做有用的工作,那么为什么要减少它呢?如果它没有做有用的工作,为什么要运行呢?例如,如果Thread.Sleep不在循环中,它可能很难实现。