我想限制子进程的数量为3.一旦命中3,我等待,直到其中一个进程停止,然后执行一个新进程。我正在使用Kernel.fork来启动这个过程。ruby:我如何得到运行的子进程(叉)的数量
如何获取运行子进程的数量?还是有更好的方法来做到这一点?
我想限制子进程的数量为3.一旦命中3,我等待,直到其中一个进程停止,然后执行一个新进程。我正在使用Kernel.fork来启动这个过程。ruby:我如何得到运行的子进程(叉)的数量
如何获取运行子进程的数量?还是有更好的方法来做到这一点?
我的解决方案是使用陷阱(“CLD”),以便在子进程结束时捕获SIGCLD并减少计数器(a全局变量)正在运行的进程。
一个很好的问题,但我不认为Ruby中有这样的方法,至少不是在标准库中。有很多宝石出现在那里......
这个问题虽然听起来像是一个互斥类的工作。查阅条件变量here,了解如何使用Ruby的互斥锁。
我通常有一个要完成的任务Queue
,然后有几个线程消耗任务,直到他们收到一个指示工作结束的项目。 Thread库下的“Programming Ruby”中有一个例子。 (我不确定是否应该将示例复制并粘贴到堆栈溢出 - 对不起)
谢谢你,你的链接指出我正确的答案。 – giancarlo 2010-07-13 18:57:14