2014-04-15 16 views
3

在fork()中,當創建一個子進程時,通常會等待子進程完成,所以我想知道如果爲了完成任務而不得不等待空閒,本身?我試着閱讀一些關於它的東西,但相反它對我來說更困惑Linux叉子的用途?

+1

它是您創建的單獨進程 - 而不僅僅是一個線程。這就像開始一個新的程序。如果我們只用一個進程來生活,那麼我們又回到了80年代早期或者基本的微控制器 –

+0

首先閱讀[Fork(系統調用)](http://en.wikipedia.org/wiki/Fork_ %28system_call%29)然後[高級Linux編程](http://advancedlinuxprogramming.com/) –

回答

5

你很困惑:父母可能會「等待」孩子,但並不意味着它在等待之前什麼都不做。家長做它的事情,然後打電話等待。如果孩子已經完成,等待立即返回,否則父母可能會閒置一段時間(即不能被安排由操作系統執行),直到孩子實際完成。

一個例子:綠色的父母用黃色分出孩子。孩子可能之前或之父等待後完成:

processes

某些情況下,要求家長束手無策,例如它會產生許多工作進程,然後等待它們全部完成,從而只是作爲一個管理程序...

+0

哇該方案使其真正清楚,感謝您付出的時間。所以從它我認爲,叉使得它允許多處理被允許並且一系列處理在比正常情況下更少的時間內被執行。 – Rage91

+0

@ Rage91這是主意。如果你有1個CPU,那麼父進程和子進程將交替地獲得幾毫秒的處理器時間;內核負責調度它(調度本身本身需要幾微秒)。在具有多個處理器的機器中,內核*可能*(實際上*應該*)在第二個CPU上運行子進程,並且真正並行地執行並行工作,因此更快, –