根本區(qū)別:進程是操作系統(tǒng)資源分配的基本單位袍患,而線程是任務調度和執(zhí)行的基本單位
在開銷方面:每個進程都有獨立的代碼和數(shù)據(jù)空間(程序上下文),程序之間的切換會有較大的開銷殖卑;線程可以看做輕量級的進程,同一類線程共享代碼和數(shù)據(jù)空間,每個線程都有自己獨立的運行棧和程序計數(shù)器(PC)砰粹,線程之間切換的開銷小。
所處環(huán)境:在操作系統(tǒng)中能同時運行多個進程(程序)造挽;而在同一個進程(程序)中有多個線程同時執(zhí)行(通過CPU調度碱璃,在每個時間片中只有一個線程執(zhí)行)
內存分配方面:系統(tǒng)在運行的時候會為每個進程分配不同的內存空間;而對線程而言饭入,除了CPU外嵌器,系統(tǒng)不會為線程分配內存(線程所使用的資源來自其所屬進程的資源),線程組之間只能共享資源谐丢。
包含關系:沒有線程的進程可以看做是單線程的爽航,如果一個進程內有多個線程蚓让,則執(zhí)行過程不是一條線的,而是多條線(線程)共同完成的讥珍;線程是進程的一部分历极,所以線程也被稱為輕權進程或者輕量級進程。