eal*_*eon 11 perl multithreading
官方不鼓励在perl中使用基于解释器的线程.
还有其他基于Perl的线程吗?或者我们应该不在Perl中使用线程?
Sob*_*que 11
取决于你想要完成的事情.我仍然广泛使用线程,并且它们没有大问题.
它们最大的问题是它们不是轻量级的,如果你使用其他语言进行线程化,你可能会期望它们.
它们更相反 - 产生一个线程就像再次启动你的代码,但是有一些有用的IPC挂钩.这意味着你真的不想做一个程序的每线程任务模型,就像你可能想到的那样.
相反,您可以通过Thread::Queue工作线程样式模型更好地服务.这是一个例子:
Perl daemonize with child daemons
但是,您可能需要考虑使用fork替代方法.fork - 因为它在Unix上的实现 - 是一个非常有效的系统调用,并且可以非常有效地产生新进程.缺点是 - 它对IPC来说并不友好.
Parallel::ForkManager 是我喜欢为多处理分叉的一个模块.
但在任何一种情况下你都应该注意 - 多处理并不是一个神奇的子弹.如果您有正确的问题需要解决,它可以让您占用更多的CPU .它不会让你的磁盘更快:)
这个警告是poppycock.它应该删除.Perl的开发人员解释说,这意味着" 如果你想要一个轻量级的多任务处理系统,那么在perl中使用基于解释器的线程是正式的劝阻".
由于创建新线程可能很昂贵,因此只需使用涉及可重用工作线程的模型.