linux多執行緒的總結(pthread用法)

2021-06-18 00:43:51 字數 1942 閱讀 3420

#include 

int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,

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

returns: 0 if ok, error number on failure

第乙個引數為指向執行緒識別符號的指標。

第二個引數用來設定執行緒屬性。

第三個引數是執行緒執行函式的起始位址。

第四個引數是執行函式的引數。

當建立執行緒成功時,函式返回0,若不為0則說明建立執行緒失敗,常見的錯誤返回**為eagain和einval。前者表示系統限制建立新的執行緒,例如執行緒數目過多了;後者表示第二個引數代表的執行緒屬性值非法.

pthread_create的用法:由於pthread庫不是linux系統預設的庫,所以在使用pthread_create建立執行緒時,需要在編譯中**-lpthread引數,eg:gcc -o test -lpthrea test.c

例1:#include "pthread.h"

#include "stdio.h"

void* thread_test(void* ptr)

int main()

例2:#include

#include 

pthread_t id; 

int ret;

void thread_1()

}main()

}例3:

#include 

#include 

#include 

#include 

void *thread_function(void *arg);

char message = "hello world";

int main()

printf("waiting for thread to finish...\n");

res = pthread_join(a_thread, &thread_result); //pthread_join 阻塞執行的執行緒直到某執行緒結束

if (res != 0)

printf("thread joined, it returned %s\n", (char *)thread_result);

printf("message is now %s\n", message);

exit(exit_success);

}void *thread_function(void *arg)

[root@plinux tmp]# cc -d_reentrant -i/usr/include/nptl thread2.c -o thread2 -l/usr/lib/nptl -lpthread

[root@plinux tmp]# ./thread2

thread_function is running. argument was hello world

waiting for thread to finish...

thread joined, it returned thank you for the cpu time

message is now bye!

pthread_join()

void pthread_exit(void *retval)

int pthread_join(pthread_t pid, void **thread_return)

pthread_join()的呼叫者將掛起並等待th執行緒終止,retval是呼叫pthread_exit()的執行緒(執行緒id為pid)的返回值,如果thread_return不為null,則*thread_return=retval。

需要注意的是乙個執行緒僅允許唯一的另乙個執行緒使用 pthread_join()等待本執行緒的終止,並且被等待的執行緒應該處於可join狀態,即非detached狀態。

linux多執行緒的總結

執行緒的函式 i nt pthread create pthread t restrict tidp,const pthread attr t restrict attr,void start rtn void void restrict arg 引數功能 第乙個引數為指向執行緒識別符號的指標。第二...

linux多執行緒的總結(pthread用法)

include int pthread create pthread t restrict tidp,const pthread attr t restrict attr,void start rtn void void restrict arg returns 0 if ok,error numb...

linux多執行緒的總結(pthread用法)

include int pthread create pthread t restrict tidp,const pthread attr t restrict attr,void start rtn void void restrict arg returns 0 if ok,error numb...