【中低階級】-執行緒Thread-名詞解釋

閱讀時間約 3 分鐘
  在說執行緒(Thread)時就要先知道什麼是程式(Program)、程序(Process),才能了解什麼是執行緒(Thread),因為它們間都有著神秘的關係與關聯,再更深入一點就又會有多程序(muti-Process)、多執行緒(muti-Thread),我們就先一一說明好了,了解它們後再使用時就可以更知道它們是怎麼運行的了。

一、程式(Program)

  指的就是我們所寫的程式碼(code)可以對電腦下的指令,但還未執行也就是還未載入到記憶體的狀態。

二、程序(Process)

  也可稱「行程」、「進程」,當程式執行後就會載入到記憶體內就會成為程序,每行程式隨時會被CPU執行,例如:觸發某按鈕被CPU來執行程式碼等。程序非基本執行單位,而是執行緒的容器。

三、執行緒(Thread)

  也可稱「線程」,一個執行緒會負責某一項功能。以Google Chrome瀏覽器為例,它未開啟時的狀態是程式(Program),把瀏覽器打開後進入首頁畫面此時程式(Program)就會進入程序(Process)狀態,那麼瀏覽器中有打字搜尋、語音搜尋、Google應用程式...等等功能,這些能發揮出功能的部分就是依靠不同功能的執行緒(Thread)所負責的哦!!
  因此,在同一個程序就不一定只有一個執行緒,可能就會有多個執行緒。

⊙Program、Process、Thread重點與關係

.一個程式(Program)可以執行多次,產生多個程序(Process)
.每一個程序(Process)都是互相獨立的
.每一個程序(Process)會有一個記憶體空間和一個以上的執行緒(Thread)所組成
.每一個執行緒(Thread)由Stack和紀錄CPU內部暫存器的狀態所組成
Stack:紀錄函數呼叫的路徑、所有用到的區域變數。
CPU內部暫存器的狀態:內容包含程式計數器PC(Program Counter)、堆疊指標SP(Stack Pointer)、程式狀態字PSW(Program Status Word)。

四、多程序(muti-Process)

  在同一段時間內去做不同的事。例如這一個小時的家事分配:爸爸去切水果、媽媽去煮飯、小孩們去丟垃圾。有多個程序[行程](Process)各有一個或多個執行緒(Thread)在執行,彼此程序[行程](Process)會有各自的資料空間,若要共用則需要特別的方法來傳遞,依照作業系統(OS)而定。

五、多執行緒(muti-Thread)

  在同一段時間內只做一件事。例如這一個小時的家事:全家先一起煮飯,再切水果,最後再一起去丟垃圾。一個程序[行程](Process)會有多個執行緒(Thread)在執行,彼此就會共用相同的資料空間

⊙muti-Process、muti-Thread重點與差異

.多程序(muti-Process)可以在相同的時間內完成較多的工作
 多執行緒(muti-Thread)同樣的工作有機會用更短的時間內完成
.多程序(Multi-process)會比多執行緒(Multi-thread)更消耗資源
 [因為多程序中每個Process都需要一些資源來工作]
.有多核心處理器的電腦就可以做多程序(muti-Process)、多執行緒(Multi-thread)

為什麼會看到廣告
avatar-img
21會員
43內容數
Hello~ Welcome to my blog~❤ 這邊會分享我在程式這條道路中的學習與成長, 過程中從而了解自己的不足,再學習。 希望透過分享的方式, 也讓正在學習程式的夥伴們一起學習, 我們一起加油吧~ 「彼此都會成為彼此之間的影響力」(´,,•ω•,,)♡ ❣
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
橙果杏的沙龍 的其他內容
  程式在執行的過程中難免會遇到意外的狀況發生,這時該怎麼辦呢?現實生活中我們可能就會去保保險,那麼程式怎麼辦?有一個例外處理try...catch可以幫我們解決這個問題,甚至還可以使用throw可以丟出例外,例外處理部分是可以透過程式的規劃來了解是哪邊出問題的哦!怎麼說呢?我們來看一下例子:
  本篇要分享的是事件(Event)與委派(Delegate),這兩者時常都會綁再一起,怎麼說呢?我們先來各別了解什麼是Event?什麼是Delegate?他們都在做些什麼事呢? 一、事件(Event)   事件(Event)是事情的發生、狀態的發生或改變,也可以說是對於這件事去「做通知」這個動作。
  本篇要分享的內容包含Enum、Dictionary、Stack、Queue、IComparable<T>、IComparer<T>、CompareTo、Compare等等相關內容。它們與Array和List有些類似,都是資料集合存取或資料其他相關處理的部分,我們就來看一看它們是何方神聖吧~
  物件導向說到這邊其實修飾詞不只有之前所提的public、private這些,還有可能遇到抽象(abstract)、虛擬(virtual)、覆寫(override)、隱藏(new)、密封(sealed)、介面(interface)等等,我們就來看一下它們的差異吧~
三、多型(polymorphism)   多型就是在同事物下使用不同條件就可以表現出不同的形態。舉例來說:以「小貓」為例它會有不同的屬性,包括品種、名字、年齡等等,對於每一隻就會有不同的動作如:趴、走、坐、跑等等行為。那麼 .小貓就屬於「同一事物」 .品種、名字、年齡這些就屬於「不同條件」 .趴、走
二、繼承(inheritance) 繼承就是假如A(子)類別去繼承B(父)類別,那麼A(子)類別可以直接去使用B(父)類別非私有的屬性和方法,但是A(子)只能繼承一個B(父)類別ㄛ! 一樣的道理可以比喻為:爸爸跟小孩之間的關係。小孩可以去運用爸爸的資源,但是爸爸的工作屬於他自己的不能跟小孩一起分享,
  程式在執行的過程中難免會遇到意外的狀況發生,這時該怎麼辦呢?現實生活中我們可能就會去保保險,那麼程式怎麼辦?有一個例外處理try...catch可以幫我們解決這個問題,甚至還可以使用throw可以丟出例外,例外處理部分是可以透過程式的規劃來了解是哪邊出問題的哦!怎麼說呢?我們來看一下例子:
  本篇要分享的是事件(Event)與委派(Delegate),這兩者時常都會綁再一起,怎麼說呢?我們先來各別了解什麼是Event?什麼是Delegate?他們都在做些什麼事呢? 一、事件(Event)   事件(Event)是事情的發生、狀態的發生或改變,也可以說是對於這件事去「做通知」這個動作。
  本篇要分享的內容包含Enum、Dictionary、Stack、Queue、IComparable<T>、IComparer<T>、CompareTo、Compare等等相關內容。它們與Array和List有些類似,都是資料集合存取或資料其他相關處理的部分,我們就來看一看它們是何方神聖吧~
  物件導向說到這邊其實修飾詞不只有之前所提的public、private這些,還有可能遇到抽象(abstract)、虛擬(virtual)、覆寫(override)、隱藏(new)、密封(sealed)、介面(interface)等等,我們就來看一下它們的差異吧~
三、多型(polymorphism)   多型就是在同事物下使用不同條件就可以表現出不同的形態。舉例來說:以「小貓」為例它會有不同的屬性,包括品種、名字、年齡等等,對於每一隻就會有不同的動作如:趴、走、坐、跑等等行為。那麼 .小貓就屬於「同一事物」 .品種、名字、年齡這些就屬於「不同條件」 .趴、走
二、繼承(inheritance) 繼承就是假如A(子)類別去繼承B(父)類別,那麼A(子)類別可以直接去使用B(父)類別非私有的屬性和方法,但是A(子)只能繼承一個B(父)類別ㄛ! 一樣的道理可以比喻為:爸爸跟小孩之間的關係。小孩可以去運用爸爸的資源,但是爸爸的工作屬於他自己的不能跟小孩一起分享,
你可能也想看
Google News 追蹤
Thumbnail
本篇文章探討作業系統如何管理程式,介紹了 Process、Thread 及 Process Control Block(PCB)的基本概念。本文以實際例子解釋這些概念,並詳細說明 Context Switch 的運作方式以及程式的五大狀態。
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
“所有人寫的程式會變成指令 每一道指令是由CPU執行 而CPU所能理解的指令類型有限”
Thumbnail
簡要說明 JavaScript 的 Event Loop JavaScript 是單執行緒 (single-threaded) 語言,這意味著它一次只能執行一件事,因此所有函式都需要排隊等待執行,這被稱為同步 (synchronous)。在同步操作中,若函式過多或過於複雜,會導致程式阻塞 (blo
Thumbnail
電腦的運作需要仰賴許多的硬體與軟體,統稱電腦系統 (computer system)。這篇文章會概略地介紹電腦系統中的重要角色,以及它們如何相互合作,來完成複雜的工作,比如說讓無所事事的宅宅如我,假日可以躲在房間玩一整天的遊戲。 電腦、程式、與使用者 說到電腦,你的腦中會浮現什麼呢? 是螢幕
※ 同步概念: 單純地「由上而下」執行程式碼,而且一次只執行一件事,也就是「按順序執行,一個動作結束才能切換到下一個」。缺點是你需要「等待」事情執行完畢,才能繼續往下走。 ※ 非同步概念: 盡可能讓主要的執行程序不需要停下來等待,若遇到要等待的事情,就發起一個「非同步處理」,讓主程序繼續執行,
Thumbnail
當你需要在 Python 中執行多個任務,但又不希望它們相互阻塞時,可以使用 threading 模組。 threading 模組允許你在單個程序中創建多個執行緒,這些執行緒可以同時運行,從而實現並行執行多個任務的效果。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
對於程序式編程來說,程式是由一系列的指令組成,例如計算數值、印出訊息、修改變數、呼叫子程序、配置變數的記憶體空間等。定義函式是為了讓一些程序可以重複利用,因此稱為子程序,其中參數為子程序中特別的變數,讓我們能夠透過它們控制子程序的行為。函式的回傳值只是一種方便將結果帶回來的方法,但一般只能回傳一個值
Thumbnail
關於多執行緒/多行程的使用方式 在Python 3.2版本之後加入了「concurrent.futures」啟動平行任務, 它可以更好的讓我們管理多執行緒/多行程的應用場景,讓我們在面對這種併發問題時可以不必害怕, 用一個非常簡單的方式就能夠處裡, 底下我們將為您展示一段程式碼: imp
Thumbnail
本篇文章探討作業系統如何管理程式,介紹了 Process、Thread 及 Process Control Block(PCB)的基本概念。本文以實際例子解釋這些概念,並詳細說明 Context Switch 的運作方式以及程式的五大狀態。
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
“所有人寫的程式會變成指令 每一道指令是由CPU執行 而CPU所能理解的指令類型有限”
Thumbnail
簡要說明 JavaScript 的 Event Loop JavaScript 是單執行緒 (single-threaded) 語言,這意味著它一次只能執行一件事,因此所有函式都需要排隊等待執行,這被稱為同步 (synchronous)。在同步操作中,若函式過多或過於複雜,會導致程式阻塞 (blo
Thumbnail
電腦的運作需要仰賴許多的硬體與軟體,統稱電腦系統 (computer system)。這篇文章會概略地介紹電腦系統中的重要角色,以及它們如何相互合作,來完成複雜的工作,比如說讓無所事事的宅宅如我,假日可以躲在房間玩一整天的遊戲。 電腦、程式、與使用者 說到電腦,你的腦中會浮現什麼呢? 是螢幕
※ 同步概念: 單純地「由上而下」執行程式碼,而且一次只執行一件事,也就是「按順序執行,一個動作結束才能切換到下一個」。缺點是你需要「等待」事情執行完畢,才能繼續往下走。 ※ 非同步概念: 盡可能讓主要的執行程序不需要停下來等待,若遇到要等待的事情,就發起一個「非同步處理」,讓主程序繼續執行,
Thumbnail
當你需要在 Python 中執行多個任務,但又不希望它們相互阻塞時,可以使用 threading 模組。 threading 模組允許你在單個程序中創建多個執行緒,這些執行緒可以同時運行,從而實現並行執行多個任務的效果。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
對於程序式編程來說,程式是由一系列的指令組成,例如計算數值、印出訊息、修改變數、呼叫子程序、配置變數的記憶體空間等。定義函式是為了讓一些程序可以重複利用,因此稱為子程序,其中參數為子程序中特別的變數,讓我們能夠透過它們控制子程序的行為。函式的回傳值只是一種方便將結果帶回來的方法,但一般只能回傳一個值
Thumbnail
關於多執行緒/多行程的使用方式 在Python 3.2版本之後加入了「concurrent.futures」啟動平行任務, 它可以更好的讓我們管理多執行緒/多行程的應用場景,讓我們在面對這種併發問題時可以不必害怕, 用一個非常簡單的方式就能夠處裡, 底下我們將為您展示一段程式碼: imp