進程回顧 線程 線程的實現 ...
- 進程回顧
- 資源分配的基本單位
- 線程
- 系統調度的基本單位
- 進程可以包含多個線程。這些線程共用代碼區,數據區和打開的文件。
- 每個線程有獨立的線程上下文(program counter,寄存器和其他的狀態信息)和棧。
- 優勢:1)responsiveness 2) 資源共用 3) 高效,創建快,context switch快 4)適合多處理器的架構。
- 線程的實現
- 用戶空間的用戶線程 and 內核空間的內核線程
- 用戶線程: 依賴於線程庫來實現線程的創建、調度(節省時間,不用trap into os,調度演算法可定製)和管理。但對於內核而言,多線程是不可見的。【缺點:系統調用阻塞;無法利用多處理器的優勢】
- 內核線程:操作系統支持,內核實現線程的創建,調度和管理。
- Linux線程創建例子:
-
#include <pthread.h> int sum; void* runner(void* arg); int main() { pthread_t tid; pthread_attr_t attr; // default attribute pthread_attr_init(&attr); // create thread pthread_create(&tid, &attr, runner, 82); // wait thread to exit pthread_join(tid, NULL); pfrintf("sum = %d \n", sum); } void * runner(void* arg) { int i, upper = (int)arg; sum = 0; if(upper > 0) { for(i = 1; i <= upper; i++) sum+= i; } // exit pthread_exit(0); }