2014-04-27 88 views
3

我有一臺筆記本電腦與CPU Intel Core i3,我想創建一個簡單的程序Perl使用CPU容量的100%。 我已閱讀約Threads並搜索有關平行運行它們,但我無法使用CPU的100%。強制perl程序使用所有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?

回答

4

你需要使線程實際上東西。例如。使他們從0到大數。睡覺不佔用CPU時間。

3

你沒有使用任何CPU,因爲線程正在休眠 - 它告訴操作系統基本上「我沒有做任何事情,所以在其他地方使用你的資源」。

嘗試一些計算 - 就像一個嵌套的循環,並將結果打印到/ dev/null而不是睡眠。