【发布时间】:2015-07-15 08:43:03
【问题描述】:
【问题讨论】:
-
答案取决于您认为需要线程的原因。
标签: multithreading perl
【问题讨论】:
标签: multithreading perl
那个警告是罂粟花。它应该被删除。 Perl 的开发人员解释说,这意味着“如果你想要一个轻量级的多任务系统,官方不鼓励在 perl 中使用基于解释器的线程。
由于创建新线程的成本可能很高,因此只需使用涉及可重用工作线程的模型。
【讨论】:
取决于您要完成的工作。我仍然广泛使用线程,它们并没有什么大问题。
它们最大的问题是它们不是轻量级的,如果您使用其他语言进行线程化,您可能会期望它们是轻量级的。
它们恰恰相反——产生一个线程就像重新开始你的代码,但有一些对 IPC 有用的钩子。这意味着你真的不想像你想的那样做一个每线程任务模型的程序。
相反,Thread::Queue 工作线程样式模型会更好地为您服务。这是一个例子:
Perl daemonize with child daemons
但是,您可能想考虑使用fork 作为替代方案。 fork - 因为它是在 Unix 上实现的 - 是一个非常有效的系统调用,并且对于产生新进程非常有效。
缺点是 - 它对 IPC 不太友好。
Parallel::ForkManager 是我喜欢为多处理进行分叉的一个模块。
但无论哪种情况,您都应该注意 - 多处理不是灵丹妙药。它可以让你占用更多的 CPU如果你有正确的问题要解决。它不会让你的磁盘运行得更快:)
【讨论】: