Udemy Course Multithreading, Concurrency & Performance 1
動機--為何需要多個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內又包含兩樣:
- Stack
- Instruction Pointer
Multithreaded應用程式的Process:
其中包含多個Thread(ex:一個Main Thread,另一個Thread1…etc)
每個Thread擁有各自的Stack與Instruction Pointer
但是其他資源(file,Heap,Code...etc)則是共用
簡單描述Stack & Instruction Pointer
Stack:儲存區域變數供function使用的記憶體區塊
Instruction(命令) Pointer:下一個要執行的命令的位置