pthread_join得到pthread_exit传出来的参数
2013-11-11 20:13
239 查看
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <pthread.h> struct foo { int a,b,c,d; }w; void printfoo(const char *s, const struct foo *fp) { printf(s); printf(" structure at 0x%x\n", (unsigned)fp); printf(" foo.a = %d\n", fp->a); printf(" foo.b = %d\n", fp->b); printf(" foo.c = %d\n", fp->c); printf(" foo.d = %d\n", fp->d); } void *thr_fn1(void *arg) { pthread_t tid; tid = pthread_self(); printf("thread 1: ID is %u\n", (unsigned int)tid); printfoo("thread 1:\n", &w); w.a = 500; w.b = 600; w.c = 700; w.d = 800; pthread_exit((void *)&w); } void *thr_fn2(void *arg) { pthread_t tid; tid = pthread_self(); printf("thread 2: ID is %u\n", (unsigned int)tid); pthread_exit((void *)0); } int main(void) { int err; pthread_t tid1, tid2; struct foo *fp; w.a = 1; w.b = 2; w.c = 3; w.d = 4; err = pthread_create(&tid1, NULL, thr_fn1, NULL); if(err != 0) printf("can't create thread 1: %s\n", strerror(err)); err = pthread_join(tid1, (void *)&fp); if(err != 0) printf("can't join with thread 1: %s\n", strerror(err)); sleep(1); printf("parent starting second thread\n"); err = pthread_create(&tid2, NULL, thr_fn2, NULL); if( err != 0) printf("can't create thread 2: %s\n", strerror(err)); sleep(1); printfoo("parent: \n", fp); return 0; }
运行结果:
[root@localhost one]# gcc pthread2.c -lpthread [root@localhost one]# ./a.out thread 1: ID is 3078536048 thread 1: structure at 0x8049b94 foo.a = 1 foo.b = 2 foo.c = 3 foo.d = 4 parent starting second thread thread 2: ID is 3078536048 parent: structure at 0x8049b94 foo.a = 500 foo.b = 600 foo.c = 700 foo.d = 800 [root@localhost one]#
相关文章推荐
- pthread_join/pthread_exit用法实例
- pthread_join/pthread_exit的用法解析
- pthread_join/pthread_exit的用法解析
- linux学习值十四---线程终止pthread_exit()&pthread_join()
- pthread_exit(void *rval_ptr)和pthread_join(pthread_t thread, void **rval_ptr)
- pthread_join/pthread_exit
- 2线程原语:pthread_create(),pthread_self(),pthread_exit(),pthread_join(),pthread_cancel(),pthread_detach(
- POSIX线程,线程的客户/服务通信(pthread_join,pthread_exit,pthread_detach,pthread_self)
- pthread_join/pthread_exit用法实例
- pthread_join/pthread_exit的使用方法解析
- C语言pthread_create传递带多个参数的函数& pthread_join
- pthread_join/pthread_exit用法实例
- pthread_join/pthread_exit用法实例
- pthread_join/pthread_exit用法实例
- pthread_join/pthread_exit用法实例
- 线程正常终止pthread_exit,pthread_join,pthread_kill,pthread_cancel,sigwait,sigaddset
- linux posix 通过pthread_join获取线程pthread_exit返回的数据
- pthread_exit与pthread_join的区别
- 线程pthread_create()、pthread_exit()、pthread_join()、pthread_cancel()
- Linux下多线程编程__线程的创建pthread_create与退出pthread_exit,等待当前线程退出pthread_join,获取线程ID pthread_self