日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线程与进程区别

發布時間:2023/11/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程与进程区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

一.定義:

進程(process)是一塊包含了某些資源的內存區域。操作系統利用進程把它的工作劃分為一些功能單元。

?

進程中所包含的一個或多個執行單元稱為線程(thread)。進程還擁有一個私有的虛擬地址空間,該空間僅能被它所包含的線程訪問。

二.區別:

?

一個程序至少有一個進程,一個進程至少有一個線程.。

1.多進程比多線程程序要健壯進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產生影響,而線程沒有自己單獨的內存地址空間。一個線程死掉整個進程就死掉了。

2.進程擁有獨立的堆棧空間和數據段,所以每當啟動一個新的進程必須分配給它獨立的地址空間,建立眾多的數據表來維護它的代碼段、堆棧段和數據段,這對于多進程來說十分“奢侈”,系統開銷比較大;

? ?線程一樣,線程擁有獨立的堆棧空間,但是共享數據段,它們彼此之間使用相同的地址空間,共享大部分數據,比進程更節儉,開銷比較小,切換速度也比進 程快,效率高但是正由于進程之間獨立的特點,使得進程安全性比較高,也因為進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。

3.進程——資源分配的最小單位,線程——程序執行的最小單位。或者說是CPU調度和分派的基本單位。在Mac、Windows NT等采用微內核結構的操作系統中,進程的功能發生了變化:它只是資源分配的單位,而不再是調度運行的單位。在微內核系統中,真正調度運行的基本單位是線程。因此,實現并發功能的單位是線程。

4.體現在通信機制上面:正因為進程之間互不干擾,相互獨立,進程的通信機制相對很復雜,譬如管道,信號,消息隊列,共享內存,套接字等通信機制,而線程由于共享數據段所以通信機制很方便。一進程下的線程共享數據(比如全局變量,靜態變量),通過這些數據來通信不僅快捷而且方便,當然如何處理好這些訪問的同步與互斥正是編寫多線程程序的難點

5.體現在CPU系統上面:線程使得CPU系統更加有效,因為操作系統會保證當線程數不大于CPU數目時,不同的線程運行于不同的CPU上。

? ?進程占用內存多,切換復雜,CPU利用率低; 線程占用內存少,切換簡單,CPU利用率高。

6.線程的執行與進程是有區別的。每個獨立的線程有有自己的一個程序入口,順序執行序列和程序的出口,但是線程不能獨立執行,必須依附與程序之中,      由應用程序提供多個線程的并發控制。

?

三.進程、用戶線程、內核線程的區別和聯系

?

?進程用戶線程(輕量級進程)內核線程
代碼段
數據段
描述符task_struct
用戶空間堆棧一個線程組共享一個用戶空間完全沒有
內核空間堆棧
PID獨一無二的一組線程共享一個

這里的有是指擁有獨立的。

四.進程與線程的選擇

取決以下幾點:

1、需要頻繁創建銷毀的優先使用線程;因為對進程來說創建和銷毀一個進程代價是很大的。

2、線程的切換速度快,所以在需要大量計算,切換頻繁時用線程,還有耗時的操作使用線程可提高應用程序的響應

3、因為對CPU系統的效率使用上線程更占優,所以可能要發展到多機分布的用進程,多核分布用線程;

4、并行操作時使用線程,如C/S架構的服務器端并發線程響應用戶的請求;

5、需要更穩定安全時,適合選擇進程;需要速度時,選擇線程更好。

6.對于一些要求同時進行并且又要共享某些變量的并發操作,只能用線程,不能用進程。

轉載于:https://www.cnblogs.com/curo0119/p/7857322.html

總結

以上是生活随笔為你收集整理的线程与进程区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。