创建一个线程
thread: 线程的id,传出参数
attr: 代表线程的属性
第三个参数函数指针,void *func(void*)
arg: 线程执行函数的参数
返回值:
成功返回0
失败返回errno
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
线程退出函数
pthread_exit
线程退出注意事项
在线程中使用pthread_exit
在线程中使用return (主控线程return代表退出进程)
exit代表退出整个进程
//pthread_self 线程id
void * thrFun(void *arg)
{
printf("I am thread = %d, tid=%lu\n",getpid(),pthread_self());
sleep(5);
printf("I am thread = %d, tid=%lu\n",getpid(),pthread_self());
return (void*)100;
}
int main()
{
// 创建线程 #include <pthread.h>
pthread_t tid;
pthread_create(&tid,NULL,thrFun,NULL);
void *ret;
pthread_join(tid,&ret); //线程回收
printf("ret exit with %d\n",(int*)ret);
pthread_exit(NULL);
}
线程回收函数--阻塞等待回收
int pthread_join(pthread_t thread,void **retval);
thread 创建的时候传出的第一个参数;
retval 代表传出线程的退出信息