一.概述
linux中不區分程序和執行緒,都認為是個任務,都是建立乙個task_struct.如何區分?執行緒是共享相同位址空間,而程序是獨佔位址空間.
多執行緒共享同一程序的位址空間
優點:通訊方便,可以通過全域性變數.
缺點:訪問共享資料時需要考慮同步和互斥.
二.執行緒共享資源:
可執行的指令
靜態資料
程序中開啟的檔案描述符
當前工作目錄
使用者id
使用者組id
三.執行緒私有資源:
執行緒id
pc(程式計數器)和相關暫存器:保證不同執行緒執行不同的**.
堆疊錯誤號
優先順序執行狀態和屬性
四.linux執行緒庫:
pthread執行緒庫:(posix)
1.建立執行緒:
2.**執行緒(pthread_join):
pthread_join(pthread_t thread, void **retval)
*retval接收執行緒thread函式對應的返回值,比如return返回的值或者pthread_exit中的retval.(兩者是等效的)
3.結束執行緒(pthread_exit):
結束當前執行緒,而exit是結束當前的程序.
pthread_exit(void *retval)相當於return retval;可以是各種型別.
retval可被其他執行緒通過pthread_join獲取.
示例:
#include#include#include
void * task(void *param)
intmain()
pthread_join(tid, &result);
printf(
"建立主線程\n");
printf(
"result is %s\n
", result);
pthread_exit(null); //退出,並返回null,有個就不需要return 0了.
}
Linux下執行緒
此文講述的執行緒為linux下,其執行緒庫函式是由posix標準定義的,稱為posix thread或者pthread。在linux上線程函式位於libpthread共享庫中,因此在編譯時要加上 lpthread選項。建立執行緒 終止執行緒 等待執行緒 三個函式都為pthread.h中定義,其中要注...
Linux下執行緒實現
1.執行緒概述 程序是系統中程式執行和資源分配的基本單位。每個程序有自己的資料段 段和堆疊段。執行緒通常叫做輕型的程序。執行緒是在共享記憶體空間中併發執行的多道執行路徑,他們共享乙個程序的資源。因為執行緒和程序比起來很小,所以相對來說,執行緒花費更少的cpu資源。2.執行緒建立和退出 在linux中...
Linux下執行緒的操作
01 7 27 上午 10 39 13 介紹在linux下執行緒的建立和基本的使用。linux下的執行緒是乙個非常複雜的問題,由於我對執行緒的學習不時很好,我在這裡只是簡單的介紹執行緒的建立和基本的使用,關於執行緒的高階使用 如執行緒的屬性,執行緒的互斥,執行緒的同步等等問題 可以參考我後面給出的資...