C++线程的最大CPU线程

Ant*_*hea 6 c++ multithreading

我正在使用std :: threads并且在我的设置中我的其他线程(可变数量,当前设置为10)正在使用如此多的容量,以至于我在任务管理器中使用的cpu达到应用程序的100%.这使我的主线程滞后,这应该是实时的(我认为这是滞后的原因).

我使用Intel Amplifier进行了调试,但没有其他线索可以解释为什么主线程应该滞后.我的次要线程都很忙.

是否有可能告诉线程它可以使用多少CPU最大值?如何确保我的其他线程不会影响主线程的性能?

线程初始化:

for (int i = 0; i < numberOfThreads; i++)
{
   std::thread* thread = new std::thread(&MyClass::mWorker, this);
   mThreads.push_back(thread);
}
Run Code Online (Sandbox Code Playgroud)

我的系统:i5-4590 3.3GHz,8 GB RAM,Windows 8 64位,Ogre3D图形引擎

Rud*_*lis 8

我不认为有任何C++ 11的方法可以做到这一点,但你可以使用平台线程调度功能与native_handle,你可以从一个std::thread,然后设置线程的优先级(例如 - 优先主线程)或设置线程亲和性,以便主线程绑定到任何工作线程未使用的独占核心.