【发布时间】:2011-03-05 05:50:00
【问题描述】:
我已经完成了我早期的使用 perl 线程的多线程程序,它可以在我的系统上运行。问题是在一些需要运行的系统上,线程支持没有编译到 perl 中,我无法安装额外的包。因此,我需要使用线程以外的东西,并且我正在将我的代码移动到使用 fork()。这适用于我的 Windows 系统启动子任务。
几个问题:
如何判断子进程何时退出?当线程数低于某个值时,我创建了新线程,我需要跟踪正在运行的线程数。对于进程,我如何知道一个进程何时退出,以便我可以跟踪当时存在多少个,在创建一个时增加一个计数器,在一个退出时减少一个计数器?
当父进程打开时,使用 OPEN 获得的句柄的文件 I/O 在子进程中是否安全?我需要为每个子进程附加到一个文件中,这在 unix 上是否也安全。
是否有替代 fork 和 threads 的方法?我尝试使用 Parallel::ForkManager,但它没有安装在我的系统上(使用 Parallel::ForkManager;出现错误),我绝对要求我的 perl 脚本可以在所有 unix/windows 系统上运行,而无需安装任何额外的模块。
【问题讨论】:
-
更像是一种解决方法,但也许您可以在进程启动时写入文件,然后在退出时删除文件或类似的东西......拥有一个主脚本来监视这些文件左右...... .
标签: perl multithreading parallel-processing multitasking