gpt4 book ai didi

multithreading - Perl的线程系统如何工作?

转载 作者:行者123 更新时间:2023-12-04 05:04:17 26 4
gpt4 key购买 nike

Perl's documentation说:
从Perl 5.8开始,可以使用称为解释器线程的模型进行线程编程,该模型为每个线程提供一个新的Perl解释器。

在下面的程序中使用ps -Lm <pid>,我可以看到线程并行运行,即它们在不同的内核中同时运行。但是,即使有4个线程(3个和主线程),ps aux也只显示一个Perl进程。

  • 这是否意味着每个线程上都有一个完整的Perl解释器?
  • Perl线程是否映射到系统线程?
  • 如果2为true,那么如何在单个进程中拥有多个Perl解释器?

  • use threads;

    $thr = threads->new(\&sub1);
    $thr2 = threads->new(\&sub1);
    $thr3 = threads->new(\&sub1);

    sub sub1 {
    $i = 0;
    while(true){
    $i = int(rand(10)) + $i;
    }
    }


    $thr->join;

    最佳答案

    “Perl解释器”是指执行Perl代码的环境。从用户的角度来看,这主要是符号表及其中的全局变量,但它还包含许多内部变量(例如,解析期间使用的那些内部变量,当前操作等)。

  • 是的,每个线程都有一个Perl解释器。
  • 是,Perl线程是系统线程。
  • 可以将“Perl解释器”视为可以创建任意数量实例的类。* Perl将其称为Multiplicity。有关如何在应用程序中嵌入Perl解释器的信息,请参见perlembed


  • * —在构建Perl时需要使用 -Dusemulitplicity,这由 -Dusethreads暗示,这是将线程支持添加到Perl的方式。否则,将使用一堆全局变量而不是“类”。

    关于multithreading - Perl的线程系统如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12536064/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com