linux下執行緒以及pthread庫

2022-03-25 15:09:06 字數 1099 閱讀 2970

一.概述

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下的執行緒是乙個非常複雜的問題,由於我對執行緒的學習不時很好,我在這裡只是簡單的介紹執行緒的建立和基本的使用,關於執行緒的高階使用 如執行緒的屬性,執行緒的互斥,執行緒的同步等等問題 可以參考我後面給出的資...