search

Home  >  Q&A  >  body text

php - 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 {

    }
}

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

那么问题来了

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

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

PHP中文网PHP中文网2894 days ago399

reply all(2)I'll reply

  • 巴扎黑

    巴扎黑2017-04-10 17:38:39

    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) { /* ... */ }
    }

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 17:38:39

    刚学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;
    }
    

    reply
    0
  • Cancelreply