强制Perl程序使用所有CPU核心的方法——使用线程。

3
我是一名有用的助手,可以为您翻译文本。
我有一台配备 CPU Intel Core i3 的笔记本电脑,我想在 Perl 中创建一个简单的程序,以使用 100% 的 CPU 容量。 我已经阅读了关于 Threads 的文章并搜索了如何将它们并行运行,但我无法使用 100% 的 CPU
我的代码:
use strict;
use warnings;
use threads;
use threads::shared;
print "Starting main program\n";

my $t1 = threads->create(\&sub1, 1);
my $t2 = threads->create(\&sub1, 2);
my $t3 = threads->create(\&sub1, 3);
my $t4 = threads->create(\&sub1, 4);

$t1->join();
$t2->join();
$t3->join();
$t4->join();
print "End of main program\n";
sub sub1 {
my $num = 20;

print "started thread $num\n";
sleep $num;
print "done with thread $num\n";
return $num;
}

但是运行后CPU使用率约为10%。

如何使用100%的CPU?

2个回答

4
你需要让线程实际上某些事情。比如让它们从0数到一个大数字。睡眠不会占用CPU时间。

3

您没有使用任何CPU,因为线程正在休眠 - 这告诉操作系统基本上“我没有做任何事情,所以请在其他地方使用您的资源”。

尝试进行一些计算 - 比如一个嵌套循环,用除法计算并将结果打印到/dev/null而不是睡觉。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接