【go】Node 如何以最简短的代码跑满 CPU
学 Golang 看到了一段代码,是通过协程与死循环将整个 CPU 跑满:
package mainimport (
"runtime"
)
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
for i := 0; i < runtime.NumCPU(); i++ {
go func() {
for {
}
}()
}
for {
}
}
然后想到了 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 的全部内容, 来源链接: utcz.com/a/104434.html