pthread_join()函数几点
2014-12-19 20:08
197 查看
APUE第十一章P312,“调用线程将一直阻塞,直到指定的线程调用pthread_exit、从启动例程中返回或者被取消。“这句话的理解,调用pthread_join()函数的线程会等到pthread_join()指定的线程结束自己才结束,使创建的线程有机会执行。而且该线程必须可结合的,如果线程已处于分离状态,调用失败。同时,创建了一个新的线程,必须使用pthread_join()对资源进行收回。
书中的例子:
注释掉pthread_join(),主函数会立即返回,thread1和thread2还没有机会执行。
书中的例子:
#include "apue.h" #include <pthread.h> void * thr_fn1(void *arg) { printf("thread 1 returning\n"); return((void *)1); } void * thr_fn2(void *arg) { printf("thread 2 exiting\n"); pthread_exit((void *)2); } int main(void) { int err; pthread_t tid1, tid2; void *tret; err = pthread_create(&tid1, NULL, thr_fn1, NULL); if (err != 0) err_exit(err, "can't create thread 1"); err = pthread_create(&tid2, NULL, thr_fn2, NULL); if (err != 0) err_exit(err, "can't create thread 2"); err = pthread_join(tid1, &tret); if (err != 0) err_exit(err, "can't join with thread 1"); printf("thread 1 exit code %ld\n", (long)tret); err = pthread_join(tid2, &tret); if (err != 0) err_exit(err, "can't join with thread 2"); printf("thread 2 exit code %ld\n", (long)tret); exit(0); }
注释掉pthread_join(),主函数会立即返回,thread1和thread2还没有机会执行。
相关文章推荐
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- Linux 的pthread_create 和 pthread_join 函数的一些新的理解
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- 多线程编程实例---pthread_join函数详解1
- pthread_join函数及linux线程
- pthread_create 函数引发的几点思考
- pthread的pthread_join()函数理解实验
- pthread_join函数及linux线程转
- pthread_join函数及linux线程
- pthread_join函数及其它线程终止函数
- c线程中sleep()和pthread_join()函数之我见
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join()函数
- pthread_join函数及linux线程
- pthread_join函数及linux线程