什么是进程什么是线程,他们的区别是什么
生活随笔
收集整理的這篇文章主要介紹了
什么是进程什么是线程,他们的区别是什么
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
定義
進程是程序的一次運行過程,進程可以看成程序執行的一個實例,進程是系統進行資源分配和調度的一個獨立單位。
線程是進程的一個實體,是進程的一條執行路徑,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。
區別
1.地址空間和其他資源(如打開文件):進程間相互獨立,同一進程的各線程間共享。某進程內的線程在其他進程內不可見。
進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發操作,只能用線程,不能用進程。
另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。
2.通信:進程間通信IPC(管道,信號量,共享內存,消息隊列),線程間可以直接獨寫進程數據段(如全局變量)來進程通信——需要進程同步和互斥手段的輔助,以保證數據的一致性。
3.調度和切換:線程上下文切換比進程上下文切換快得多。
4.在多線程OS中,進程不是一個可執行的實體。
5、一個程序至少有一個進程,一個進程至少有一個線程。
總結
以上是生活随笔為你收集整理的什么是进程什么是线程,他们的区别是什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql行锁和表锁
- 下一篇: jdk jre jvm三者之间的关系