進程和線程之間的技術區別是什麼? 編程
我感到像「過程」這樣的詞已被過分使用,而且還有硬件和軟件線程。 像Erlang這樣的語言的輕量級進程怎麼樣? 有明確的理由使用一個術語而不是另外一個術語嗎? 瀏覽器
關於併發編程的更多解釋 安全
流程具備獨立的執行環境。 流程一般具備一套完整的私有基本運行時資源; 特別是,每一個進程都有本身的存儲空間。 併發
線程存在於一個進程中-每一個進程至少有一個。 線程共享進程的資源,包括內存和打開的文件。 這樣能夠進行有效的通訊,但可能會出現問題。 spa
牢記普通人, 操作系統
在計算機上,打開Microsoft Word和Web瀏覽器。 咱們稱這兩個過程 。 線程
用Microsoft Word,您輸入一些東西,它將自動保存。 如今,您將觀察到編輯和保存是並行進行的-在一個線程上進行編輯,而後在另外一個線程上進行保存。 對象
流程 :正在執行的程序稱爲流程 進程
線程 :線程是一種功能,可根據「一個與另外一個」的概念與程序的另外一部分一塊兒執行,所以線程是進程的一部分。 事件
如下是我從The Code Project的一篇文章中獲得的內容。 我想它能夠清楚地說明全部須要的內容。
線程是將工做負載拆分爲單獨的執行流的另外一種機制。 線程比進程輕。 這意味着,與完整的過程相比,它提供的靈活性較差,但因爲操做系統設置較少,所以啓動速度更快。 當一個程序包含兩個或多個線程時,全部線程共享一個內存空間。 爲進程分配了單獨的地址空間。 全部線程共享一個堆。 可是每一個線程都有本身的堆棧。
試圖回答與Java世界有關的問題。
進程是程序的執行,可是線程是進程內的單個執行序列。 一個進程能夠包含多個線程。 線程有時稱爲輕量級進程 。
例如:
示例1:JVM在單個進程中運行,而且JVM中的線程共享屬於該進程的堆。 這就是爲何多個線程能夠訪問同一對象的緣由。 線程共享堆並擁有本身的堆棧空間。 這樣一來,一個線程對方法及其局部變量的調用就可使線程免受其餘線程的影響。 可是堆不是線程安全的,所以必須同步以確保線程安全。
示例2:程序可能沒法經過讀取按鍵來繪製圖片。 該程序必須充分注意鍵盤輸入,而且一次不能處理多個事件的能力將致使麻煩。 解決此問題的理想方法是同時無縫執行一個程序的兩個或多個部分。 線程使咱們可以作到這一點。 這裏的「繪製圖片」是一個過程,而讀取按鍵是「子」過程(線程)。