【发布时间】:2009-08-13 13:39:40
【问题描述】:
在我的应用程序中,我需要检查是否已打开给定文件以写入另一个进程,即使此文件已打开,我的应用程序也只是跳过此文件,这里不会发生类似“死”的事情。
我的问题的更详细描述:
涉及两个过程。进程A是生产者进程,进程B是消费者进程w。
进程 A 会创建一些请求给 B 来处理,他创建请求的方式只是在某个目录下创建一个基于 txt 的文件。当A创建请求时,他不知道B是否还活着,他需要做的就是放弃请求,有点像给B写一封电子邮件。创建请求文件后,A再也不会访问它。
prpcess B ,有时向上有时向下。当它运行时,B 将“假脱机”A drop 请求的目录。对于每个请求文件,B 只需将其读取并删除即可。
但我认为那里存在一些竞争条件。例如,A 刚打开一个文件,正在用请求填充文件,然后 B 想读取同一个文件并手 它。
我的问题是我应该如何在 perl 中优雅地处理竞争条件?
【问题讨论】:
-
我们需要知道您在哪个操作系统上运行
-
您想知道它目前是打开的,还是最近被修改过的?
-
在大多数操作系统上要解决的烦人问题。告诉我们您想要完成的工作,我们可能会想出一个更好的计划。