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