小编Yic*_*hao的帖子

编写程序使CPU使用率达到50%左右

问题描述

  • 问题的目标是在Windows上编写程序以使CPU使用率保持在50%左右.
  • 在Windows上,我们可以使用任务管理器Perfmon.exe来监视CPU使用情况.
  • CPU使用百分比应该接近50%,因为操作系统中还有许多其他任务,我们只需要占用CPU的近似使用百分比.
  • CPU可以是多核处理器或单核处理器,因此有利于通用解决方案

问题的起源

最初的问题来自编程美的第1.1章

关于这个问题的个人努力

环境

  • 处理器:Intel i5-3470,4核,4线程
  • 系统:Windows 7
  • 开发环境:Visual Studio 2010,提升库

第一次尝试

我的第一次尝试没有考虑多核和多线程,所以它不起作用,但它提供了这样的想法:如果我们希望处理器加载一半,我们可以创建一个无限循环,它占用一半的时间,并占用处理器另一半.

我将跳过第一次尝试的细节.

第二次尝试

在我的第二次努力中,情况进展顺利,但仍有一些困扰我的问题.

我的第一个解决方

以下片段是第一个可能的解决方案.它使用GetTickCount()Windows API,并使用两个线程将处理器加载到50%.

解决方案一个要点.

#include <boost/thread.hpp>
#include "windows.h"
#define INTERVAL 10

void infiniteLoop() {
    while (1) {
        DWORD startTime = GetTickCount();
        while (GetTickCount() - startTime <= INTERVAL)
            ; 
        boost::posix_time::millisec sleepTime(INTERVAL);
        boost::this_thread::sleep(sleepTime);
    }
}

int main() {
    boost::thread thread1(infiniteLoop);
    boost::thread …
Run Code Online (Sandbox Code Playgroud)

c++ operating-system cpu-usage

7
推荐指数
1
解决办法
3380
查看次数

标签 统计

c++ ×1

cpu-usage ×1

operating-system ×1