開始學習如何提升某部分演算法的效能,對於如何運用多工開發邏輯的釐清和整理
跟以往單工開發的邏輯差上許多,必須考慮到整合、處理邏輯、場景等等的因素

多執行緒(線程) Multi-Thread

啟動 Thread 的速度就不會比 Process 來的快,但是彼此之間的記憶體是共享的

但是在處理的過程中沒有小心處理,可能會導致彼此之間搞的一踏糊塗

多進程 Multi-Process

啟動 Process 的速度是比較快的,擁有獨立的記憶體空間及資源

多個 Process 之間由於記憶體獨立的關係,彼此之間不能直接交換資料

需要透過一個通道進行傳遞,才能有辦法使 Process 之間溝通

然而一個 Process 內是可以擁有多個 Thread

Multi-Thread vs. Multi-Process

並發 Concurrency

依照上圖的情境說明,依照 A 處理 Job1、B 處理 Job2、C 處理 Job3

但是 A、B、C 彼此牽制,好比搶奪一個辦公桌

誰坐在上面就能開始工作,離開崗位後其他人利馬搶辦公桌來使用

平行 Parallelism

依照上圖的情境說明,依照 A、B、C 進行工作處理分別為 Job1、Job2、Job3

但是 A、B、C 同時依序進行工作,沒有誰先誰後的問題,同時的進行處理

Concurrency vs. Parallelism

Concurrency 沒有辦法同時運作,那要他何用!?

情境

心得

有了基礎概念之後,對於設計構思上面會比較好進行思考

但是還是會很思考錯誤短路燒壞,畢竟人是單線性思維在所難免

不過把效能提升上去之後還是看到滿滿的成就感

參考資料

  1. 名詞釐清
  2. Concurrency與Parallelism的不同之處
  3. What’s the Diff: Programs, Processes, and Threads
  4. Concurrency != Parallelism
  5. Difference Between Concurrency and Parallelism
  6. Concurrency VS Parallel Programming