我正在運行試圖在perl中一次運行兩個子例程。我能做的最好的方式是什麼?例如:Perl運行同步例程
sub 1{
print "im running";
}
sub 2{
print "o hey im running too";
}
如何一次執行兩個例程?
我正在運行試圖在perl中一次運行兩個子例程。我能做的最好的方式是什麼?例如:Perl運行同步例程
sub 1{
print "im running";
}
sub 2{
print "o hey im running too";
}
如何一次執行兩個例程?
使用threads
。
use strict;
use warnings;
use threads;
sub first {
my $counter = shift;
print "I'm running\n" while $counter--;
return;
}
sub second {
my $counter = shift;
print "And I'm running too!\n" while $counter--;
return;
}
my $firstThread = threads->create(\&first,15); # Prints "I'm running" 15 times
my $secondThread = threads->create(\&second,15); # Prints "And I'm running too!"
# ... 15 times also
$_->join() foreach ($firstThread, $secondThread); # Cleans up thread upon exit
你應該注意的是印刷是如何不規則地交錯的。不要試圖在假設執行順序良好的前提下進行任何計算。
Perl的線程可以互相通信使用:
use threads::shared;
)use Thread::Queue;
)use Thread::Semaphore;
)參見perlthrtut以獲取更多信息和優異的教程。
我居然沒意識到,Perl可以做到這一點,但你需要的是支持多線程:
http://search.cpan.org/perldoc?threads
要麼,叉兩個過程,但是這將是一個有點難以隔離子例程的調用。
查看[這篇文章](http://stackoverflow.com/questions/2423353/can-we-run-two-simultaneous-non-nested-loops-in-perl)的相關問題。 – Zaid 2010-06-01 13:36:56
感謝大家。欣賞它 – jtime08 2010-06-01 13:41:00