Tak*_*kun 1 perl multithreading
use threads;
use threads::shared;
sub test {
my $s :shared = 22;
my $thread = threads->new(\&thrsub);
$thread->join();
print $s;
}
sub thrsub {
$s = 33;
}
test;
Run Code Online (Sandbox Code Playgroud)
为什么不在线程中共享数据?
它共享变量,但您访问的变量与您共享的变量不同.(use strict;会告诉你在这种情况下有不同的变量.总是使用use strict; use warnings;)修复是使用单个变量.
my $s :shared = 22;
sub test {
my $thread = threads->new(\&thrsub);
$thread->join();
print $s;
}
sub thrsub {
$s = 33;
}
test;
Run Code Online (Sandbox Code Playgroud)