首页 > 代码库 > pThread线程(一) 基本API
pThread线程(一) 基本API
1.创建线程
int pthread_create(pthread_t *restrict_ptid,
const pthread_attr_t *restrict_attr,
void *(*start_routine)(void*), void *restrict_arg);
ptid是一个pthread_t *类型的指针,pthread_t是类似pid_t的数据结构,表示线程ID;attr指明线程创建属性,如果为NULL就使用系统默认属性;start_routine是线程的主函数,它的参数是void *类型的指针,返回值也是void *类型的指针;arg是线程创建者传递给新建线程的参数,也就是start_routine的参数。
注意:线程创建者和新建线程之间没有fork()调用那样的父子关系,它们是对等关系。调用pthread_create()创建线程后,线程创建者和新建线程哪个先运行是不确定的,特别是在多处理机器上。
2.终止线程
void pthread_exit(void *value_ptr);
线程调用pthread_exit()结束自己,参数value_ptr被调用pthread_join的线程使用。
3.pthread_self()得到线程ID
4.pthread_equal()比较线程ID,线程ID的大小没有意义。
3.取消线程
int pthread_cancel(pthread_t thread);
向线程thread发送取消请求,默认情况下线程thread自己调用pthread_exit(PTHREAD_CANCELED),可以在创建线程时通过attr改变默认行为。pthread_cancel并不阻塞调用者,总是立即返回。
4.连接线程 阻塞
int pthread_join(pthread_t thread, void **value_ptr);
等待线程thread结束,并设置*value_ptr为thread的返回值。pthread_join阻塞调用者,一直到线程thread结束为止。
线程终止有一下几种方法:
1.从主函数返回;
2.自己调用pthread_exit();
3.其他线程调用pthread_cancel();
4.线程所属的进程中任何线程调用exit()导致所有线程结束。
5.分离线程
int pthread_detach(pthread_t thread);
分离线程的语意是,线程thread结束后系统可以回收它的私有数据。
pThread线程(一) 基本API