【发布时间】:2013-10-04 02:09:49
【问题描述】:
我正在尝试在 perl 脚本的主要部分创建并稍后加入一个线程,但在一个子例程中创建该线程,该例程接受参数并将一些额外的xterm 参数添加到传入的命令中。会最好返回线程名称(ID?)?
这是子程序
sub run_thread{
my $thread_name = $_[0];
my $cmd = $_[1];
$thread_name = threads->create({'void' => 1},
sub { print("\n$cmd\n"); system($xterm . '-T "' . $cmd . '" -e ' . $cmd) });
}
在 main 中我想这样调用 sub:
my $thr1;
run_thread($thr1, "pwd");
...
$thr1->join();
这是行不通的,而且在很多层面上都可能在某种程度上是错误的。错误是:
Use of uninitialized value $_[0] in concatenation (.) or string at line 37.
Can't call method "join" on an undefined value at line 21.
我搞砸了通过引用传递和返回,但不确定最佳方式。请帮忙。
【问题讨论】:
-
create 返回一个对象,而不是一个名称。
标签: perl thread-safety subroutine