進(jìn)程線程操作 android主進(jìn)程銷(xiāo)毀了,線程會(huì)不會(huì)也銷(xiāo)毀?
android主進(jìn)程銷(xiāo)毀了,線程會(huì)不會(huì)也銷(xiāo)毀?是的。Android基于Linux內(nèi)核開(kāi)發(fā),進(jìn)程調(diào)度與Linux一致。主進(jìn)程銷(xiāo)毀后,其中的線程會(huì)被內(nèi)核銷(xiāo)毀,資源會(huì)被回收,但子進(jìn)程不會(huì)。因?yàn)榫€程使用主進(jìn)程
android主進(jìn)程銷(xiāo)毀了,線程會(huì)不會(huì)也銷(xiāo)毀?
是的。
Android基于Linux內(nèi)核開(kāi)發(fā),進(jìn)程調(diào)度與Linux一致。主進(jìn)程銷(xiāo)毀后,其中的線程會(huì)被內(nèi)核銷(xiāo)毀,資源會(huì)被回收,但子進(jìn)程不會(huì)。因?yàn)榫€程使用主進(jìn)程的進(jìn)程空間,進(jìn)程空間的破壞就意味著線程被破壞;子進(jìn)程有獨(dú)立的進(jìn)程空間。如果父進(jìn)程被破壞,子進(jìn)程將被初始進(jìn)程接管,成為繼父進(jìn)程。
多線程和多進(jìn)程模式有什么區(qū)別?
多線程是指一個(gè)進(jìn)程中同時(shí)有多個(gè)執(zhí)行路徑,也就是線程在執(zhí)行。多線程的好處是提高了執(zhí)行效率,但是會(huì)容易導(dǎo)致死鎖。
多進(jìn)程模式是通過(guò)應(yīng)用程序利用計(jì)算機(jī)的多核資源,達(dá)到同時(shí)執(zhí)行多個(gè)任務(wù)的目的,從而提高程序的執(zhí)行效率。
在多核CPU下,同一進(jìn)程下的多個(gè)線程可以并行運(yùn)行嗎?
CPU在某一時(shí)刻只能執(zhí)行一個(gè)線程,但多線程并不是因?yàn)槎嗪嘶蛘唠p核而被稱為多線程。是因?yàn)楫?dāng)多個(gè)線程并行執(zhí)行時(shí),CPU會(huì)按照一定的線程調(diào)度算法頻繁切換線程。當(dāng)一個(gè)正在執(zhí)行的線程需要IO操作或內(nèi)存訪問(wèn)時(shí),CPU可以完全放棄該線程,轉(zhuǎn)而調(diào)度線程就緒隊(duì)列上的其他線程,被放棄的線程將進(jìn)入阻塞狀態(tài)。IO操作或內(nèi)存訪問(wèn)操作完成后,線程可以進(jìn)入線程就緒隊(duì)列。人們通常指的是多線程,因?yàn)镃PU是按照一定的線程調(diào)度算法來(lái)切換線程的,所以在一段時(shí)間內(nèi),可以看到很多線程在并發(fā)執(zhí)行。實(shí)際上,在某個(gè)時(shí)間點(diǎn)只有一個(gè)線程在運(yùn)行。
簡(jiǎn)述python進(jìn)程,線程和協(xié)程的區(qū)別及應(yīng)用場(chǎng)景?
1.線程和進(jìn)程:
線程屬于一個(gè)進(jìn)程。線程在進(jìn)程空間運(yùn)行,同一個(gè)進(jìn)程生成的線程共享同一個(gè)內(nèi)存空間。當(dāng)進(jìn)程退出時(shí),進(jìn)程生成的線程將被強(qiáng)制退出并被清除。一個(gè)線程可以與屬于同一個(gè)進(jìn)程的其他線程共享該進(jìn)程擁有的所有資源,但它基本上沒(méi)有系統(tǒng)資源,只有一點(diǎn)運(yùn)行中必不可少的信息(如程序計(jì)數(shù)器、一組寄存器和堆棧)。
2.線程、進(jìn)程和協(xié)程:
線程和進(jìn)程的運(yùn)行是由程序觸發(fā)的,最終的執(zhí)行者是系統(tǒng);進(jìn)程的操作者是程序員。
協(xié)程存在的意義:對(duì)于多線程應(yīng)用,CPU通過(guò)切片的在線程間切換執(zhí)行,需要時(shí)間(保持狀態(tài),下次繼續(xù))。并發(fā),只使用一個(gè)線程,一個(gè)代碼塊的執(zhí)行順序在一個(gè)線程中指定。
協(xié)程的應(yīng)用場(chǎng)景:當(dāng)程序中有大量不需要CPU (IO)的操作時(shí),適合使用協(xié)程;