Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209505
  • 博文数量: 43
  • 博客积分: 2501
  • 博客等级: 少校
  • 技术积分: 485
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-07 21:45
文章分类

全部博文(43)

文章存档

2011年(3)

2010年(1)

2009年(21)

2008年(18)

我的朋友

分类: C/C++

2008-09-17 08:39:47

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结束后系统可以回收它的私有数据。

阅读(1281) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~