pthread线程库简介
得到线程的退出状态.如果线程调用ptread_exit((void *2)),那么pthread_join依然可以得到退出状态2.这个指针可以是复杂的结构类型以便保存更多信息.
int pthread_join(pthread_t thread, void **rval_ptr); /* 成功返回0,否则返回错误编号 */ 调用pthread_join的线程将被阻塞,直到指定的线程(thread)调用pthread_exit,从启动函数或者被取消.另外,void *rval_ptr可以作为一个int直接返回.例如return (void *)1;或者pthread_exit((void *)1);那么从pthread_join获得该指针直接可以用(int)ptr来输出. 这个void *rval_ptr指向的内存地址不应该在栈上,其内容会被下面调用的函数覆盖.应该是在堆上(通过malloc来创建)或者在静态数据段(用静态,全局变量). int pthread_cancel(pthread_t tid); /* 成功返回0,否则返回错误编号 */ 行为相等于参数值等同于PTHREAD_CANCELED的pthread_exit函数. 注意:线程可以自行选择忽略取消或者控制取消方式.注意pthread_cancel并不等待线程终止,仅仅是提出请求. 线程可以自己安排退出时需要执行的函数,这与进程atexit函数安排退出时要执行的函数是类似的.这样的函数称为线程清理处理程序.线程可以建立多个线程处理函数,存放在栈中,执行顺序与他们注册的顺序相反. void pthread_cleanup_push(void (*rtn)(void *), void *arg); void pthread_cleanup_pop(int execute); pthread_cleanup_pop删除上一次注册的线程清理处理程序.如果execute非0,则执行这个程序. 关于参数的使用方法的一个例子:
参考: APUE ULK fork vfork clone pthread_create http://blog.csdn.net/sandflee/article/details/5189312 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |