2.Perl 多线程:Threads(线程返回值)

Posted FireC@t @ Perl6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.Perl 多线程:Threads(线程返回值)相关的知识,希望对你有一定的参考价值。

 1 use warnings;
 2 use strict;
 3 use threads;
 4  
 5 sub TEST{
 6     print "Hello, World!\\n";
 7     return (qw/1 2 3 4 \'a\'/);
 8 }
 9  
10 #返回列表方法1
11 my ($t1) = threads->new(\'TEST\');
12 print $t1->join, "\\n";
13  
14 #返回列表方法2
15 #
16 my $t2 = threads->new({\'context\' => \'list\'}, \'TEST\');
17 print $t2->join, "\\n";
18  
19 #返回单个值
20 my $t3 = threads->new(\'TEST\');
21 print $t3->join, "\\n";
22 getc();

 

对于函数调用, 如果要得到返回列表, 你应要用一个@values来获得返回值:

1 #eg.
2 my @values = &test;
3 #如果函数调用中返回列表, 如你用一个$value获得返回值, 应会得到列表的最后一个元素的值
4 #eg.
5 my $value = (1,2,3,4 \'a\');
6 print $value;
7 #result:\'a\'
8 #注意, 这跟my $value = 1,2,3,4, \'a\';不同
9 #

 

在多线程中, 想得到线程返回程, 那就调用join方法, 如果没必要获取返回值, 要调用detach方法, 如果两个都不调用, 会得到一个警告。
一般来说, 都应调用join/detach方法。

 

以上是关于2.Perl 多线程:Threads(线程返回值)的主要内容,如果未能解决你的问题,请参考以下文章

Threads(线程)

笔记 线程(threads)

BAI度 内部资料!Python_Threads多线程

Threads(异步和多线程)

多线程等待

Windbg 堆栈跟踪问题