如何在Perl中的分叉之间共享简单的标量(计数器变量)?
|
我已经编写了一个可以多次分叉的程序,每个分叉也可能分叉成较小的部分。
每个最低级别的子级最终都将运行复杂的计算并将结果输出到一个我唯一希望的文件中,我希望该文件是唯一的。
这些ID必须是唯一的,以便当所有子代都完成后,父代可以收获子代,然后收集数据。
作为帮助具体化的示例,每个子代将产生一个文件“ 0”,其中包含各个子代已处理的数据。
当父级发现所有子级都已完成时,它将使用可存储的方式将文件读回散列,并使用唯一的ѭ1作为密钥。
当两个孩子几乎同时产卵时,就会出现问题。现在,这些子项中的每一个最终都将运行其自己的独立计数器,这样,即使这些文件中的数据确实是唯一的,多个子项也可能都创建一个类似的名称“ѭ1”。
如何在分叉之间共享一个仅标量的计数器变量?
我意识到进程间通信的问题在互连网上相当普遍,但是我注意到许多解决方案都解决了在进程之间共享任意数量的数据这一普遍问题。我只需要共享一个标量,所以我想知道我的问题是否可以更简单地处理。理想情况下,非常理想的情况下,我更喜欢不涉及“非标准”模块的解决方案。我看到有时建议使用“ 3”,但是我想知道这是否对我的问题来说是过大的了,无论如何,这是“非标准”模块之一。
如果我将“ 1”作为PID,是否明智?例如,在使用频繁的计算机上运行一个星期(例如一个星期)的父程序是否有可能重用PID而不能保证唯一性?
我希望人们能提供任何建议。
没有找到相关结果
已邀请:
3 个回复
郡晒景沧
这些反过来产生
等等。
镶骄册筷
然后,父级只查找所有文件
桔马牛
但是在我看来,如果可以这样做,则可以使用管道进行通信,而不是使用临时文件。