【go】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】Node 如何以最简短的代码跑满 CPU

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

那么问题来了

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

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

回答

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;

}

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

以上是 【go】Node 如何以最简短的代码跑满 CPU 的全部内容, 来源链接: utcz.com/a/104434.html

回到顶部