【发布时间】:2014-07-14 21:12:28
【问题描述】:
我的脚本中有线程作为单独的进程运行。 当我尝试获取搜索线程的计数时,我只能在第一个线程中找到(我在哪里打印它)。
这是我制作的一个小脚本,用于显示确切的情况。
#!/usr/bin/perl
use threads;
use threads::shared;
my $found :shared = 0;
my $searched :shared = 0;
my $thr1 = threads->new(\&THREAD1);
my $thr2 = threads->new(\&THREAD2);
my @ReturnData = $thr1->join ;
my @ReturnData = $thr2->join ;
sub THREAD1 {
for (1..400) {
++$found;
print "$found / $searched\n";
}
}
sub THREAD2 {
for (1..1000) {
++$searched;
}
}
我得到的输出是:
1 / 0
2 / 0
3 / 0
4 / 0
5 / 0
6 / 0
7 / 0
8 / 0
9 / 0
10 / 0
11 / 0
12 / 0
13 / 0
14 / 0
15 / 0
16 / 0
17 / 0
18 / 0
19 / 0
20 / 0
21 / 0
22 / 0
23 / 0
24 / 0
25 / 0
26 / 0
27 / 0
28 / 0
29 / 0
30 / 0
31 / 0
32 / 0
33 / 0
34 / 0
35 / 0
36 / 0
37 / 0
38 / 0
39 / 0
40 / 0
41 / 0
42 / 0
43 / 0
44 / 0
45 / 0
46 / 0
47 / 0
48 / 0
49 / 0
50 / 0
51 / 0
52 / 0
53 / 0
54 / 0
55 / 0
56 / 0
57 / 0
58 / 0
59 / 0
60 / 0
61 / 0
62 / 0
63 / 0
64 / 0
65 / 0
66 / 0
67 / 0
68 / 0
69 / 0
70 / 0
71 / 0
72 / 0
73 / 0
第一列应该是found,第二列应该是searched,但是,我得到了这个奇怪的输出。
【问题讨论】:
标签: multithreading perl