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...