Udemy Course Multithreading, Concurrency & Performance 1

動機&系統基礎

ZONGRU Li
Jun 17, 2021

動機--為何需要多個Threads?

Responsiveness(響應性) — Concurrence(併發)

Performance — Parallelism(平行)

Responsiveness — Concurrence:

例如一個電影播放器應用程式,可以預期將滑鼠一到播放鍵上點擊後

將會回應相對應的動作畫面(即此對應一個程式task)

Multiple threads的響應性是由各個thread完成各自task

Concurrence = Multitasking(註:這並非指需要多個cores來完成concurrency)

Performance — Parallelism:

同前面所述的concurrency,我們可以單一core就平行處理多個task

更多的cores就能平行完成更多task

最終還會促使複雜的task更早地完成

亦即節省更多資源(時間,機器….etc)就能完成task

什麼是Thread?

當使用者執行應用程式時,作業系統會從磁碟中取得process

並在記憶體中建立instance

單一Thread應用程式的Process(Process或稱作應用程式context):

不同Process間互相獨立

Process其內包含Process ID,file(供讀取或寫入),執行在CPU的Code程式碼,

Heap(包含應用程式所需的Data),至少一個的"Main Thread"

Thread內又包含兩樣:

  1. Stack
  2. Instruction Pointer
Single Thread

Multithreaded應用程式的Process:

其中包含多個Thread(ex:一個Main Thread,另一個Thread1…etc)

每個Thread擁有各自的Stack與Instruction Pointer

但是其他資源(file,Heap,Code...etc)則是共用

簡單描述Stack & Instruction Pointer

Stack:儲存區域變數供function使用的記憶體區塊

Instruction(命令) Pointer:下一個要執行的命令的位置

Multithread

參考課程

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet