首页 > 代码库 > 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