加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl 多线程共享数据

发布时间:2020-12-16 00:36:46 所属栏目:大数据 来源:网络整理
导读:perl 要修改传入参数,就像c一样,要传入引用 ?#!/usr/bin/perl -w ?my $var = 1212; ?sub test ?{ ? ? ?my ($ref) = @_; ? ? ?$$ref = 12; ?} ?test($var); ?print($var); — OUTPUT ——— 12 但是在thread里面,如果直接传入引用,则无效 ?#!/usr/bin/pe

perl 要修改传入参数,就像c一样,要传入引用

?#!/usr/bin/perl -w


?my $var = 1212;

?sub test
?{
? ? ?my ($ref) = @_;
? ? ?$$ref = 12;
?}

?test($var);

?print($var);

— OUTPUT ———

12


但是在thread里面,如果直接传入引用,则无效


?#!/usr/bin/perl -w

?use Thread;


?my $var = 1212;

?sub test
?{
? ? ?my ($ref) = @_;
? ? ?$$ref = 12;
?}

?$id = Thread->new(&;test,$var);
?sleep(1);
?print($var);
?$id->join();

— OUTPUT ———

1212


需要引入多线程变量共享,将var设置成全局的,这样就可以,当然多个线程就需要考虑竞争神马的,可以继续参考lock之类的文章


#!/usr/bin/perl -w


use Thread;
use threads::shared;


my $var : shared = 1212;

sub test
{
? ? $var = 12;
}


$id = Thread->new(&;test);
sleep(1);

print($var);

$id->join();

— OUTPUT ———

12

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读