我想限制子進程的數量爲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