【问题标题】:How to call the subroutine from another perl module using threads如何使用线程从另一个 perl 模块调用子例程
【发布时间】:2013-06-26 11:21:23
【问题描述】:

我正在尝试通过以下方式进行线程编程 perl:

Description: 当前perl脚本需要调用另一个perl模块(.pm文件)中存在的另一个子程序,使用线程方法。

Case1:使用线程调用子程序的一般方式是这样的

my $t= Thread->new(\&process, @args);

其中process是子程序存在于同一个perl文件中。

Case2: 调用存在于不同 perl 模块中的子例程

my $t= Thread->new(\&$anotherfile->another_process, @args);

其中 another_process 存在于不同的 perl 模块中,而不是存在于同一个 perl 文件中。

问题是Case2 不适合我。我无法将任何参数传递给该线程。 谁能帮我解决这个问题?

【问题讨论】:

  • 首先你应该从另一个文件userequire 打包,并通过包指向它的方法。您的 Thread 是旧的且已弃用的线程模型;您使用的是哪个 perl 版本?

标签: multithreading perl


【解决方案1】:

因为案例 2 给出了从变量 anotherfile 上的方法 another_process 返回的线程引用...

尝试使用闭包:

threads->create(
    sub {
        return $anotherfile->another_process(@_);
    },
    @args
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多