線程和進(jìn)程的區(qū)別主要在于它們是不同的操作系統(tǒng)資源管理方式。進(jìn)程有獨立的地址空間徘意,一個進(jìn)程崩潰后苔悦,在保護模式的影響下不會對其他進(jìn)程產(chǎn)生影響,而線程只是一個進(jìn)程中的不同執(zhí)行路徑映砖。線程有自己的堆棧和局部變量间坐,但線程之間沒有單獨的地址空間,一個線程死掉就等同于整個進(jìn)程死掉,所以多進(jìn)程的程序要比多線程的程序健壯竹宋,但在進(jìn)程切換時劳澄,耗費資源較大,效率要差一些蜈七。但對于一些要求同時進(jìn)行并且又要共享某些變量的并發(fā)操作秒拔,只能用線程,不能用進(jìn)程飒硅。
? ? ?線程是CPU獨立運行和獨立調(diào)度的基本單位(可以理解為一個進(jìn)程中執(zhí)行的代碼片段)砂缩。
? ? ?進(jìn)程是資源分配的基本單位(進(jìn)程是一塊包含了某些資源的內(nèi)存區(qū)域)。
? ? ?進(jìn)程和線程都是由操作系統(tǒng)所體會的程序運行的基本單元三娩,系統(tǒng)利用該基本單元實現(xiàn)系統(tǒng)對應(yīng)用的并發(fā)性庵芭。進(jìn)程是線程的容器,真正完成代碼執(zhí)行的線程雀监,而進(jìn)程則作為線程的執(zhí)行環(huán)境双吆。一個程序至少包含一個進(jìn)程,一個進(jìn)程至少包含一個線程会前,一個進(jìn)程中的所有線程共享當(dāng)前進(jìn)程所擁有的資源好乐。