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