【发布时间】:2021-08-12 11:34:45
【问题描述】:
我是 Perl 新手,我正在尝试了解如何正确使用线程。
为什么下面的代码是按顺序打印的(如果不涉及线程,我会期望)而不是混合?
my $q = Thread::Queue->new();
my $thr = threads->create(
sub {
while ( defined(my $InstPort = $q->dequeue())) {
my $waiting = 0;
while ($waiting < 999) {
print("num = $InstPort \n");
$waiting = $waiting + 1;
}
}
}
);
$q->enqueue(1,2,3,4,5);
$q->end();
$thr->join();
输出:
1
1
... // 999 times
2
2
... // 999 times
3
3
... // 999 times
4
4
... // 999 times
5
5
... // 999 times
我参考了以下网站: https://www.perlmonks.org/?node_id=1068673 https://metacpan.org/pod/Thread::Queue
【问题讨论】:
标签: multithreading perl