pthread 基础篇 pthread_join
2013-05-21 20:43
232 查看
int pthread_join(pthread_t th, void **thread_return);
功能:挂起当前线程,等待线程th结束,并获取该线程结束时返回的数据。
th:线程ID
thread_turn:存放线程结束时返回的数据地址
使用注意事项:
1·线程结束时返回的数据地址,不能使用局部变量的地址,即栈上的地址,线程结束后,线程栈空间会被释放掉,相应的数据有可能被冲掉
2· 多个线程调用pthread_join,等待同一个线程的返回结果是未定义的
测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *thread_proc_function(void *argements);
char *thread_return_value = "i will go, miss you baby..";
void main()
{
pthread_t thread1;
char *ptr_message1 = "message 1";
void *ptr_return_value = 0;
int iret1 = 0;
iret1 = pthread_create(&thread1, NULL, thread_proc_function, ptr_message1);
pthread_join(thread1, &ptr_return_value);
printf("main get sub thread return string: %s\n", ptr_return_value);
exit(0);
}
void *thread_proc_function(void *argements)
{
char *message = (char *)argements;
printf("%s\n", message);
return thread_return_value;
}
参考资料:
1· http://zh.wikipedia.org/wiki/Native_POSIX_Thread_Library
2· http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html#BASICS
功能:挂起当前线程,等待线程th结束,并获取该线程结束时返回的数据。
th:线程ID
thread_turn:存放线程结束时返回的数据地址
使用注意事项:
1·线程结束时返回的数据地址,不能使用局部变量的地址,即栈上的地址,线程结束后,线程栈空间会被释放掉,相应的数据有可能被冲掉
2· 多个线程调用pthread_join,等待同一个线程的返回结果是未定义的
测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *thread_proc_function(void *argements);
char *thread_return_value = "i will go, miss you baby..";
void main()
{
pthread_t thread1;
char *ptr_message1 = "message 1";
void *ptr_return_value = 0;
int iret1 = 0;
iret1 = pthread_create(&thread1, NULL, thread_proc_function, ptr_message1);
pthread_join(thread1, &ptr_return_value);
printf("main get sub thread return string: %s\n", ptr_return_value);
exit(0);
}
void *thread_proc_function(void *argements)
{
char *message = (char *)argements;
printf("%s\n", message);
return thread_return_value;
}
参考资料:
1· http://zh.wikipedia.org/wiki/Native_POSIX_Thread_Library
2· http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html#BASICS
相关文章推荐
- pthread_join
- 简析pthread_join()和pthread_detach()
- 对linux中多线程编程中pthread_join的理解
- pthread_detach与pthread_join区别
- pthread_join pthread_exit pthread_detach
- pthread_join函数及linux线程
- pthread_join和pthread_detach的用法(转)
- pthread_create—pthread_cancel—pthread_join
- pthread_join函数及linux线程
- APUE-线程及其属性:pthread_join与pthread_detach
- c/c++ linux c 多线程 pthread_detach(id); phthread_join(id,0);
- 线程正常终止pthread_exit,pthread_join,pthread_kill,pthread_cancel,sigwait,sigaddset
- pthread_join函数介绍和使用实例
- Linux线程-pthread_join
- C语言pthread_create传递带多个参数的函数& pthread_join
- linux pthread_join & sigset 的使用例子 .
- Pthread创建线程后必须使用join或detach释放线程资源
- Windows和Linux上分别怎样实现等待某个线程结束?---用WaitForSingleObject和pthread_join
- 线程相关函数(1)-pthread_create(), pthread_join(), pthread_exit(), pthread_cancel() 创建取消线程
- 笔记十:线程间的通信(pthread_exit()和pthread_join())