- Program:
一群程式碼的集合,用以解決特定的問題。在物件導向中相當於類別(Class)。 - Process:
由Program所產生的執行個體,一個Program可以同時執行多次產生多個Process。在物件導向中相當於Object。
- Memory Space:相當於Object的variable,不同Process的Memory Space也不同,彼此看不到其他Process的Memory Space。
- 一個以上的Thread:
Thread代表從某個起始點開始(例如main),到目前為止所有函數的呼叫路徑,以及這些呼叫路徑上所用到的區域變數。
- Stack:紀錄函數呼叫路徑,以及這些函數所用到的區域變數。
- 目前CPU的狀態。
總之Thread 執行緒常被定義為一個輕量的(Lightweight) Process,可用來處理 request,
然而雖然是輕量,但在產生 Thread 時仍會有 overhead,此時若 request 量太大,
又沒有善加管理這些 Thread 的話,就會拖累整體系統的效能。
為了解決這種類型的效能問題,所以就有了 Thread Pool 的概念產生。
Thread Pool 的概念如同其名,就是一個 Thread 的 Pool,
其中有固定或變動量的 Thread,當 request 進來時,若有閒置的 Thread 就執行,
若沒有的話,可能產生新的 Thread 或把 request 放入 queue 中等待被執行,
當一條 Thread 執行完工作而 queue 中仍有 request 在等待時,
此 Thread 應該要被分發新的 request 並處理。
由以上幾行,我們可以看出 Thread Pool 的工作有:
- 管控 Thread 的產生與回收
- 分發 Thread 處理 request
- 處理 request 的 queue
沒有留言:
張貼留言