相关疑难解决方法(0)

Perl中的ithreads(解释器线程)的用例以及使用或不使用它们的基本原理?

如果您想了解如何使用Perl解释器线程,有良好的文档perlthrtut(线程教程),并threads附注手册页.写一些简单的脚本绝对够好.

但是,我发现在网络上的一些指导,为什么怎样明智地使用Perl解释器线程.事实上,关于它们的讨论并不多,如果人们谈论它们,通常会阻止人们使用它们.

这些线程,可当perl -V:useithreadsuseithreads='define';和释放use threads,也被称为的ithread,也许更恰当,以便他们有很大的不同,从由Linux或Windows操作系统或Java虚拟机中的任何内容所提供的线程默认情况下,而是一个共享大量数据被复制,而不仅仅是线程堆栈,因此显着增加了进程大小.(要查看效果,请在测试脚本中加载一些模块,然后在循环中创建线程,每次都按下按键,并观察任务管理器中的内存增加或top.)

[...]每次启动线程时,所有数据结构都将复制到新线程中.当我说全部,我的意思是全部.这包括包括stashes,全局变量,范围内的词汇.一切!

- 编程Perl ithreads之前需要了解的事情(Perlmonks 2003)

在研究Perl ithreads的主题时,你会看到人们不鼓励你使用它们("非常糟糕的主意","从根本上有缺陷",或"从不使用ithreads for any").

Perl线程教程强调"Perl线程是不同的",但它没有太多麻烦解释它们是如何不同以及这对用户意味着什么.

有关ithreads实际内容的有用但非常简短的解释来自WINDOWS PROCESS EMULATIONCoro标题下的联机帮助页.该模块的作者(Coro - perl中唯一真正的线程)也不鼓励使用Perl解释器线程.

在某处我读到,在启用线程的情况下编译perl会导致解释器显着变慢.

有从2003年Perlmonks页面(你需要的东西之前的Perl编程的ithread知道),其中笔者问:"现在你可能想知道为什么Perl中的ithread不使用fork()那不是已经取得了很多更有意义?" 这似乎是由forkspragma 的作者写的.不确定该页面上提供的信息在2012年仍适用于较新的Perls.

以下是Perl中线程使用的一些指导原则,我从读数中提炼出来(可能是错误的):

parallel-processing perl multithreading

30
推荐指数
2
解决办法
4085
查看次数

使用子守护进程进行Perl守护进程

我必须在我的代码中使用守护进程.我需要一个控制守护进程,它不断检查数据库中的任务并监督子守护进程.控制守护进程必须将任务分配给子守护进程,控制任务,如果其中一个死亡,则创建新子进程等.子守护进程检查数据库以查找它们的任务(通过PID).我应该如何为此目的实现守护进程?

perl daemon

5
推荐指数
1
解决办法
1681
查看次数