Multithreading 使用线程强制perl程序使用所有CPU容量

Multithreading 使用线程强制perl程序使用所有CPU容量,multithreading,perl,parallel-processing,cpu-usage,Multithreading,Perl,Parallel Processing,Cpu Usage,我有一台装有CPU英特尔核心i3的笔记本电脑,我想在Perl中创建一个简单的程序,以使用CPU的100%容量。 我已经阅读了线程并搜索了如何并行运行它们,但我不能100%使用CPU 我的代码: use strict; use warnings; use threads; use threads::shared; print "Starting main program\n"; my $t1 = threads->create(\&sub1, 1); my $t2 = thread

我有一台装有
CPU英特尔核心i3
的笔记本电脑,我想在
Perl
中创建一个简单的程序,以使用
CPU
的100%容量。 我已经阅读了
线程
并搜索了如何并行运行它们,但我不能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?

您需要让线程实际执行某些操作。例如,让他们从0数到一个大数字。睡眠不会占用CPU时间。

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

尝试一些计算——比如一个带除法的嵌套循环,并将结果打印到/dev/null而不是休眠