進程:是併發執行的程序在執行過程當中分配和管理資源的基本單位,是一個動態概念,競爭計算機系統資源的基本單位。html
線程:是進程的一個執行單元,是進程內科調度實體。比進程更小的獨立運行的基本單位。線程也被稱爲輕量級進程。服務器
一個程序至少一個進程,一個進程至少一個線程。
網絡
爲何會有線程?多線程
每一個進程都有本身的地址空間,即進程空間,在網絡或多用戶換機下,一個服務器一般須要接收大量不肯定數量用戶的併發請求,爲每個請求都建立一個進程顯然行不通(系統開銷大響應用戶請求效率低),所以操做系統中線程概念被引進。併發
線程的改變只表明CPU的執行過程的改變,而沒有發生進程所擁有的資源的變化。 spa
進程線程的區別:操作系統
一個進程崩潰後,在保護模式下不會對其餘進程產生影響,可是一個線程崩潰整個進程都死掉。因此多進程要比多線程健壯。.net
進程切換時,消耗的資源大,效率高。因此涉及到頻繁的切換時,使用線程要好於進程。一樣若是要求同時進行而且又要共享某些變量的併發操做,只能用線程不能用進程線程
優缺點:htm
線程執行開銷小,可是不利於資源的管理和保護。線程適合在SMP機器(雙CPU系統)上運行。
進程執行開銷大,可是可以很好的進行資源管理和保護。進程能夠跨機器前移。
什麼時候使用多進程,什麼時候使用多線程?
對資源的管理和保護要求高,不限制開銷和效率時,使用多進程。
要求效率高,頻繁切換時,資源的保護管理要求不是很高時,使用多線程。
參考:http://blog.csdn.net/yaosiming2011/article/details/44280797
http://www.cnblogs.com/flashsky/articles/642720.html