perl fork与共享数据结构的线程

时间:2012-07-06 20:15:03

标签: multithreading perl hash fork hash-of-hashes

我正在编写一个脚本,我需要在多个进程之间共享数据结构。目前我正在分叉,当我只需要共享简单变量(即$ var,@ alt,%hash)时效果很好。然而最近我一直试图分享更复杂的变量,例如散列哈希,我遇到了很多麻烦。我已尝试使用IPC::ShareableDBM::Deepforks::shared,但它们似乎都存在共享更复杂数据结构的问题,例如散列哈希。我想知道的是像我这样的情况,使用叉子或线程会更好吗?我喜欢fork语法,因为它似乎很容易使用,但如果我在线程变得更简单时跳过很多不必要的箍,我肯定会想要切换。

更新

共享意味着单独的进程需要同时读取和写入数据结构。

我在Centos5.5上运行Perl 5.8

1 个答案:

答案 0 :(得分:2)

您完全没有提供有关共享模式的信息,因此我假设您正在使用工作模型(这是您真正应该使用的模型),这意味着数据通过消息队列共享。

如果是这样,答案是“无所谓”。您可以选择use forks;use threads;,并使用Thread::Queue::Any作为任务间沟通渠道。