父進程和子進程可以并發(fā)執(zhí)行;不管是父進程還是子進程都是系統(tǒng)分配資源的最小單位,都是獨立的進程,是可以并發(fā)運行的,并發(fā)在微觀上不是同時執(zhí)行的,只是把時間分成若干段,使多個進程快速交替的執(zhí)行,從宏觀外來看,好像是這些進程都在執(zhí)行。
千萬級數(shù)據(jù)并發(fā)如何處理?進入學習
本教程操作環(huán)境:windows10系統(tǒng)、DELL G3電腦。
父進程和子進程可以并發(fā)執(zhí)行嗎?
可以并發(fā)運行,因為不管是父進程還是子進程都是系統(tǒng)分配資源的最小單位,都是獨立的進程,是可以并發(fā)運行的,跟進程和線程的關系不一樣。
“并行”是指無論從微觀還是宏觀,二者都是一起執(zhí)行的,就好像兩個人各拿一把鐵锨在挖坑,一小時后,每人一個大坑。
“并發(fā)”在微觀上不是同時執(zhí)行的,只是把時間分成若干段,使多個進程快速交替的執(zhí)行,從宏觀外來看,好像是這些進程都在執(zhí)行,這就好像兩個人用同一把鐵锨,輪流挖坑,一小時后,兩個人各挖一個小一點的坑,要想挖兩個大一點得坑,一定會用兩個小時。
從以上本質不難看出,“并發(fā)”執(zhí)行,在多個進程存在資源沖突時,并沒有從根本提高執(zhí)行效率。
父子進程就是并發(fā)的。
在單處理器時,多進程并沒有多大意義,單處理器的多任務處理只能是并發(fā)(交替以時間片輪詢的),此時宏觀上是多任務一起進行,實際在微觀上卻是以時間片交替進行,所以雖是在宏觀上一起運行,但所用的時間與一個進程一個進程的執(zhí)行并沒有節(jié)省多少,當有進程需要掛起或睡眠時有可能時間會一點,但若是沒有掛起或睡眠時,時間可能就會需要長一點,因為在時間片上不斷進程轉換內(nèi)核也是需要消耗的。
但在多處理器時,多任務就真的能做到并行性了,多個進程分別在不同處理器上執(zhí)行,僅在資源沖突和需要同步時,停頓等待一下,其它時間真正做到異步同時執(zhí)行。但如上所說,當多個進程存在資源沖突時,并沒有從根本提高執(zhí)行效率。