多執行緒pthread使用

2021-10-13 09:53:33 字數 2493 閱讀 7678

pthread_create是作業系統建立執行緒的函式。它的功能是建立執行緒,執行緒建立之後,執行對應的執行緒函式。

1、pthread_create

標頭檔案:#include 原型:int pthread_create(pthread_t *tidp,const pthread_attr_t *attr,

(void*)(*start_rtn)(void*),void *arg);

作用:建立乙個執行緒

返回值:執行緒建立成功返回0,建立失敗返回錯誤編號。

引數:引數一為執行緒識別符號的指標

引數二表示執行緒熟悉,一般為null

引數三為執行緒執行函式的起始位址

引數四為執行函式的引數

2、pthread_join

標頭檔案:#include 原型:int pthread_join(pthread_t thread, void **retval);

作用:阻塞當前執行緒等待指定的執行緒執行結束

返回值:成功返回0,失敗返回錯誤號

引數:引數一表示執行緒識別符號

引數二表示執行緒thread所執行的函式返回值(返回值位址需要保證有效),其中status可以為null。

可以看出pthread_join()有兩種作用:

3、pthread_mutex_init

標頭檔案:#include 原型:int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);

pthread_mutex_t mutex = pthread_mutex_initializer;

作用:用於多執行緒程式設計時,互斥鎖的初始化

返回值:成功返回0,失敗返回其他值

引數:引數一為鎖變數

引數二為鎖屬性,null值表示預設屬性

4、pthread_mutex_lock

標頭檔案:#include 原型:int pthread_mutex_lock(pthread_mutex_t *mutex)

作用:加鎖

5、pthread_mutex_unlock

標頭檔案:#include 原型:int pthread_mutex_unlock(pthread_mutex_t *mutex)

作用:解鎖

6、pthread_mutex_destroy

原型:int pthread_mutex_destroy(pthread_mutex_t *mutex);

作用:使用完後釋放

7、死鎖

死鎖主要發生在有多個依賴鎖存在時, 會在乙個執行緒試圖以與另乙個執行緒相反順序鎖住互斥量時發生. 如何避免死鎖是使用互斥量應該格外注意的東西。

總體來講, 有幾個不成文的基本原則:

對共享資源操作前一定要獲得鎖。

完成操作以後一定要釋放鎖。

盡量短時間地占用鎖。

如果有多鎖, 如獲得順序是abc連環扣, 釋放順序也應該是abc。

執行緒錯誤返回時應該釋放它所獲得的鎖。

多執行緒pthread使用時兩種釋放方法:

1、使用pthread_join

#include #include void *add1()

int main()

return;

}

2、使用pthread_detach(pthread_self());

#include #include void *add1()

int main()

return;

}

pthread_detach()使主線程與子執行緒分離,兩者相互不干涉,子執行緒結束的同時子執行緒的資源由系統自動**。

pthread_join()即是子執行緒合入主執行緒,主線程會一直阻塞,直到子執行緒執行結束,然後**子執行緒資源,並繼續執行。

pthread互斥鎖的使用

#include #include pthread_mutex_t mutex;

void *add1()

pthread_mutex_unlock(&mutex);

pthread_exit(null);

return;

}void *add2()

pthread_mutex_unlock(&mutex);

pthread_exit(null);

return;

}int main()

pthread_mutex_destroy(&mutex);

return;

}

參考:

互斥鎖:

多執行緒pthread使用

pthread create 標頭檔案 include 原型 int pthread create pthread t tidp,const pthread attr t attr,void start rtn void void arg 作用 建立乙個執行緒 返回值 執行緒建立成功返回0,建立失敗...

linux多執行緒pthread使用

linux多執行緒pthread使用 標頭檔案pthread.h pthread t pthid pthread create pthid,null,func,null 建立執行緒。pthread join pthid,null 等待該執行緒執行完畢後再退出,阻塞 執行緒掛起,不再占用cpu pth...

pthread 多執行緒

多執行緒程式指的是在同乙個程式中多個執行流併發執行,它們共享程序的同乙個位址空間,分別完成相應的任務,並通過共享位址空間等方式完成執行緒間通訊,cpu按照時間片輪轉等方式對執行緒進行切換和排程。通常而言,執行緒共享的程序資源包括 linux中線程的建立依賴於lpthread.so 庫,建立乙個thr...