|
|
|
|
|
|
c**y 发帖数: 2282 | 1 下面这个简单的程序是我问题的简化版。我期待着多个线程可以共享这个变量$locker
,可是看起来似乎每人有一份独立的$locker,为何呢?
my $locker=0;
sub worker
{
my $id=shift;
$locker++;
print "#$id working :$locker\n";
sleep(int(rand(10)));
$locker--;
print "#$id exit :$locker\n";
}
for my $i (1..10)
{
$workers[$i] = threads->create('worker', "$i");
}
for my $i (1..10)
{
$workers[$i]->join();
}
print "over\n";
运行结果是:
#1 working :1
#2 working :1
#2 exit :0
#3 working :1
#4 working :1
#5 | j*a 发帖数: 14423 | 2 看文档啊
http://perldoc.perl.org/threads.html
DESCRIPTION
Perl 5.6 introduced something called interpreter threads. Interpreter
threads are different from 5005threads (the thread model of Perl 5.005) by
creating a new Perl interpreter per thread, and not sharing any data or
state between threads by default.
locker
【在 c**y 的大作中提到】 : 下面这个简单的程序是我问题的简化版。我期待着多个线程可以共享这个变量$locker : ,可是看起来似乎每人有一份独立的$locker,为何呢? : my $locker=0; : sub worker : { : my $id=shift; : $locker++; : print "#$id working :$locker\n"; : sleep(int(rand(10))); : $locker--;
|
|
|
|
|
|