php - Node 如何以最简短的代码跑满 CPU
PHP中文网
PHP中文网 2017-04-10 17:36:39
0
2
411

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

package main

import (
    "runtime"
)

func main() {

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

            }
        }()
    }

    for {

    }
}

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

那么问题来了

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

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

PHP中文网
PHP中文网

认证0级讲师

全部回复(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;
}

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板