PHP進(jìn)程和線程之間有什么區(qū)別呢?
1、本質(zhì)區(qū)別:進(jìn)程是操作系統(tǒng)資源分配的基本單位,而線程是CPU任務(wù)調(diào)度和執(zhí)行的基本單位。
2、空間和資源:進(jìn)程之間相互獨(dú)立,統(tǒng)一進(jìn)程內(nèi)的線程之間可以共享資源。不同進(jìn)程中的線程相互獨(dú)立。
3、切換開銷:進(jìn)程之間有自己獨(dú)立的代碼段和數(shù)據(jù)空間(程序上下文),進(jìn)程之間的切換需要保存上下文、寄存器等數(shù)據(jù),會(huì)有較大的開銷;同一個(gè)進(jìn)程中的線程共享代碼段和數(shù)據(jù)空間,每個(gè)線程都有自己獨(dú)立的運(yùn)行棧和程序計(jì)數(shù)器(PC),線程之間切換的開銷小。
4、相互關(guān)系:進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對(duì)其他進(jìn)程產(chǎn)生影響,但是一個(gè)線程崩潰整個(gè)進(jìn)程都會(huì)掛掉。
5、執(zhí)行順序:進(jìn)程有自己的程序運(yùn)行的入口、順序執(zhí)行序列和程序出口。但是線程不能獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制,兩者均可并發(fā)執(zhí)行。