头文件:pthread.h
创建线程
int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func)(void *), void *arg);
- tid 线程ID,传出参数
- attr 线程属性,一般可以设置为NULL
- void *(*func)(void *) 函数指针,表示该线程执行函数
- arg 线程执行函数的唯一参数,如果需要多个参数则打包成结构体,然后传地址
- 返回值(下同)
– 成功返回0
– 失败返回-1,设置errno
一个线程创建后,要么是可汇合的(joinable)的,要么是脱离的(detached)的。
joinable的线程终止时,线程id和退出状态会被保留,直到另一个线程调用pthread_join。
detached的线程则像守护进程,终止时会直接释放。
等待其他线程结束
int pthread_join(pthread_t tid, void **retval);
- tid 必须指定线程id,不能像waitpid那样指定-1
- retval 代表传出线程的退出信息
指定线程为脱离的
int pthread_detach(pthread_t tid);
返回线程id
pthread_t pthread_self(void);
该函数不会失败
终止线程
void pthread_exit(void *retval);
不返回