Node 如何以最简短的代码跑满 CPU

学 Golang 看到了一段代码,是通过协程与死循环将整个 CPU 跑满:

package main

import (
    "runtime"
)

func main() {

    runtime.GOMAXPROCS(runtime.NumCPU())
    
    for i := 0; i < runtime.NumCPU(); i++ {
        go func() {
            for {

            }
        }()
    }

    for {

    }
}

Go 跑满 CPU

然后想到了 Node,如法炮制后发现 CPU 就没啥动静(估计是引擎的优化)。

那么问题来了

如何通过一段简短的 Node 代码跑满CPU(单核可以,所有核都满载最好)

同时也想在此搜集一下各大主流语言以最简短方式跑满 CPU 的实现代码,非常感谢各位大神(✪ω✪)

阅读 5.4k
2 个回答
var cluster = require('cluster');
var CPUs    = require('os').cpus().length;

if (cluster.isMaster) {
  for (var i = 0; i < CPUs; i++) {
    cluster.fork();
  }
}
else {
  while (true) { /* ... */ }
}

刚学C++两天,贡献一个C++ std版本的。

#include <iostream>
#include <thread>
#include <vector>

using namespace std;
void work()
{
    int i;
    while (true)
    {
        i++;
    }
}

int main()
{
    vector<thread> ts;
    for(int i =0; i < thread::hardware_concurrency(); i++)
    {
        ts.push_back(thread(work));
    }
    for(int i=0;i<ts.size();i++)
    {

        ts.at(i).join();
    }

    return 0;
}

图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题