如何使用Perl中的线程启动函数

时间:2014-05-05 10:42:42

标签: multithreading perl

我试图在我的windows系统中使用perl调用一个使用线程的函数 但是,在执行期间,当我单击按钮创建一个线程进程时,会显示Microsoft错误消息,如下所示,

" Perl命令行解释器。 请告诉微软这个问题。"

我在Perl中使用的代码片段:

use threads;

#####  Creation of a dialog box using Tkx Module #####
$Run = $MainFrame -> new_ttk__button(
          -text => TEXT,
          -width => 15,
          -command => sub
                       {
                         threads -> create({"stack_size" => 64*4096,
                                            "exit" => "thread_only"},
                         \&CALLING_FUNCTION);
                       }
);

1 个答案:

答案 0 :(得分:0)

看起来Tk遇到线程困难:Perl Update UI on Long Thread

你需要在Tk对象之前创建你的线程,也许它会以这种方式工作。

  

但是,使用带有Tkx的线程可能会很冒险。我得到了段错误   当我试图加入线程而不是分离它时,我得到了一个   如果我在startWork()中移动$ t,则使用下面的代码进行段错误。这个   讨论表明您可能需要先启动该线程   创建任何Tk小部件,使其可靠地工作。

     

您的问题是因为您要将Tk代码复制到其中   你的线程,在脚本的后期启动它。当一个线程得到   推出后,主线程的副本就发了,所以如果有Tk的话   小部件已经存在,它们会被复制进来。即使你没有   在线程中使用Tk代码,它可能会导致问题,并且会   不可靠的。所以......在开始任何Tk之前先创建你的线程   小部件代码。