需要程序,使CPU运行在100%

时间:2011-03-22 23:36:28

标签: c cpu-usage

我需要一个程序,这将使我的CPU以100%运行。

最好在C中,一个微小的程序,它将使CPU以100%运行,而一个程序未被编译器“优化”,因此它什么都不做。

建议?

6 个答案:

答案 0 :(得分:6)

这个怎么样:

int main() { for (;;); }

答案 1 :(得分:6)

int main(void) {
  volatile unsigned x=0, y=1;
  while (x++ || y++);
  return 0;
}

或者,如果你有一个多核处理器 - 未经测试......就像上面那样:)

int main(void) {
#pragma omp parallel
  {
    volatile unsigned x=0, y=1;
    while (x++ || y++);
  }
  return 0;
}

答案 2 :(得分:3)

这是一款好的,老式的叉炸弹。

#include <unistd.h>
int main(void)
{
  while(1)
    fork();
  return 0;
}

答案 3 :(得分:1)

将其复制并粘贴到名为source.c的文件中:

int main(int argc, char *argv) {
    while(1);
}

汇编source.cgcc source.c -o myprogram

运行它:./myprogram

答案 4 :(得分:0)

建议空循环的答案只能使双核CPU达到50%,四核达到25%等。

因此,如果这是一个问题,可以使用类似

的内容
void main(void)
{
    omp_set_dynamic(0);
    // In most implemetations omp_get_num_procs() return #cores 
    omp_set_num_threads(omp_get_num_procs());
    #pragma omp parallel for
    for(;;) {}
}

答案 5 :(得分:0)

用于多线程系统的Native Windows解决方案。在没有任何库的情况下在Visual C ++(或Visual Studio)上编译。

/* Use 100% CPU on multithreaded Windows systems */

#include <Windows.h>
#include <stdio.h>
#define NUM_THREADS 4

DWORD WINAPI mythread(__in LPVOID lpParameter)
{
    printf("Thread inside %d \n", GetCurrentThreadId());
    volatile unsigned x = 0, y = 1;
    while (x++ || y++);
    return 0;
}


int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE handles[NUM_THREADS];
    DWORD mythreadid[NUM_THREADS];
    int i;

    for (i = 0; i < NUM_THREADS; i++)
    {
        handles[i] = CreateThread(0, 0, mythread, 0, 0, &mythreadid[i]);
        printf("Thread after %d \n", mythreadid[i]);
    }

    getchar();
    return 0;
}