使用pthread create 建立執行緒

2022-08-03 03:33:11 字數 1217 閱讀 7838

可以通過pthread_create()函式建立新執行緒。

#include int pthread_create(pthread_t *restrict tidp,

const pthread_attr_t *restrict attr,

void *(*start_rtn)(void *),

void *restrict arg);

返回值:

若成功,返回0;否則,返回錯誤編碼

引數說明:

pthread函式在呼叫失敗後通常會返回錯誤碼,但不會設定errno

我們看下面乙個例子,該示例中,程式建立了乙個執行緒,列印了程序id、新執行緒的執行緒id以及初始執行緒的執行緒id。

#include pthread_t ntid;

void printids(const char *s)

void* thr_fn(void *arg)

int main()

printids("main thread:");

sleep(2);

exit(0);

}

執行結果如下:

main thread: pid 13019 tid 139937898653440 (0x7f45d4bd6700)

new thread: pid 13019 tid 139937890158336 (0x7f45d43bc700)

正如我們的期望,程序id相同10310,執行緒id不同。

主線程如果不休眠,有可能在新執行緒執行之前就退出了。

如下是去掉後的再次執行結果,很明顯,第一次執行時,新執行緒沒有機會執行:

➜  tmp ./pt

main thread: pid 13113 tid 139742167656192 (0x7f1842436700)

➜ tmp ./pt

main thread: pid 13119 tid 139768977393408 (0x7f1e803f8700)

new thread: pid new thread: pid 13119 tid 139768968922880 (0x7f1e7fbe4700)

上面示例中,我們使用pthread_self()函式獲得執行緒的id

pthread create 函式的安全使用

1 pthread create 函式的安全使用問題 做過linux多執行緒開發的人都會用過pthread create函式,但是很少人會注意到 主線程在使用pthread create建立執行緒時,如果pthread create 函式的第四個引數 指標引數 傳入的值會被主線程隨時修改時,這時我們...

pthread create使用類中函式指標的

原有的程式是利用一台pc機的共享記憶體來實現兩個程式間的通訊的,最近要求改了,要設計2臺pc間這兩個的程式的通訊,想把通訊部分的程式做成類封裝起來。其中,由於要有多執行緒的部分。就是說,可能在乙個執行緒裡讀,在另乙個執行緒裡寫。所以得用到類成員函式的函式指標部分。為了驗證可行性,編寫了下面的程式 c...

pthread create 函式用法

天開始學習linux下用c開發多執行緒程式,linux系統下的多執行緒遵循posix執行緒介面,稱為pthread。include int pthread create pthread t restrict tidp,const pthread attr t restrict attr,void s...