進程並不真正同時運行,而是並發運行。
壹個進程至少有壹個線程。線程的劃分尺度小於進程的劃分尺度,使得多線程程序具有高並發性。另外,進程在執行時有獨立的內存單元,多個線程共享內存,大大提高了程序的運行效率。
線程和進程在執行上的區別在於,每個獨立的線程都有壹個程序運行的入口、壹個順序執行的序列和壹個程序的出口。但是線程不能獨立執行,所以必須存在於應用中,應用提供多線程執行控制。
從邏輯的角度來看,多線程的意義在於,在壹個應用中,有多個執行部分可以同時執行。但是,操作系統並沒有將多線程視為多個獨立的應用程序來實現進程調度和管理以及資源分配。
“同時”運行多個線程或進程只是壹種感官上的表達。事實上,進程和線程是並發運行的。OS的線程調度機制把時間分成許多時間片(時間片),盡可能平均地分配給正在運行的程序。獲得CPU時間片的線程或進程被執行,而其他線程或進程等待。CPU在這些進程或線程之間來回切換。微觀上,所有的進程和線程都是走走停停的,宏觀上,都是在運行的。這種現象稱為並發,但不是絕對意義上的“同時”。