std::thread 中的无限 while 循环提高了 CPU 的使用率
Infinite while loop in std::thread raising CPU usage
我在我的 C++ 程序中的 std::thread
中执行了一个无限 while 循环。执行此操作时,我的程序使用了 45% op my CPU(根据任务管理器)。当 'throttling' 循环使用 std::this_thread::sleep_for(std::chrono::milliseconds(1))
时,CPU 使用率下降到 12%' 但是,当然,这个解决方案远非最佳,特别是考虑到我正在开发一个游戏。我如何在不休眠线程的情况下降低 CPU 的使用率,因为我需要它在 if 条件(位于循环内)为真时可用?
您应该让线程等待条件变量 (std::condition_variable
) 并在更改标志时通知它。
我在我的 C++ 程序中的 std::thread
中执行了一个无限 while 循环。执行此操作时,我的程序使用了 45% op my CPU(根据任务管理器)。当 'throttling' 循环使用 std::this_thread::sleep_for(std::chrono::milliseconds(1))
时,CPU 使用率下降到 12%' 但是,当然,这个解决方案远非最佳,特别是考虑到我正在开发一个游戏。我如何在不休眠线程的情况下降低 CPU 的使用率,因为我需要它在 if 条件(位于循环内)为真时可用?
您应该让线程等待条件变量 (std::condition_variable
) 并在更改标志时通知它。