2011-11-06 wcdj
BLP 4th P.431
在多线程程序中,通常在程序退出之前用pthread_join对线程再次进行同步,目的是让线程向创建它的主线程返回数据。但是,在某些情况下,我们既不需要第二个线程向主线程返回信息,也不想让主线程等待它的结束。例如,假设我们在主线程继续为用户提供服务的同时创建了第二个线程,新线程的作用是将用户正在编辑的数据文件进行备份存储,在备份工作结束后,第二个线程就可以直接终止了,它没有必要再回到主线程中。
我们可以创建这一类型的线程,它们被称为“ 脱离线程”( detached thread)。可以通过修改线程的属性或调用pthread_detach的方法来创建它们。在这里主要介绍通过修改线程的属性的方法。
主要的函数:
#include <pthread.h>
(1) int pthread_attr_init(pthread_attr_t *attr);
返回值:成功返回0,失败返回错误代码。
(2) 回收函数 pthread_attr_destory, 目的是对属性对象进行清理和回收。一旦对象被回收了,除非它被重新初始化,否则就不能被再次使用。
(3) 初始化一个线程属性对象后,可以调用许多其他的函数来设置不同的属性行为。(完整的函数列表见手册页,通常位于pthread.h条目下)。可以使用的线程属性非常多,但幸运的是,通常不需要设置太多属性就可以让程序正常工作。
BLP 4th P.431
线程的属性
在多线程程序中,通常在程序退出之前用pthread_join对线程再次进行同步,目的是让线程向创建它的主线程返回数据。但是,在某些情况下,我们既不需要第二个线程向主线程返回信息,也不想让主线程等待它的结束。例如,假设我们在主线程继续为用户提供服务的同时创建了第二个线程,新线程的作用是将用户正在编辑的数据文件进行备份存储,在备份工作结束后,第二个线程就可以直接终止了,它没有必要再回到主线程中。
我们可以创建这一类型的线程,它们被称为“ 脱离线程”( detached thread)。可以通过修改线程的属性或调用pthread_detach的方法来创建它们。在这里主要介绍通过修改线程的属性的方法。
主要的函数:
#include <pthread.h>
(1) int pthread_attr_init(pthread_attr_t *attr);
返回值:成功返回0,失败返回错误代码。
(2) 回收函数 pthread_attr_destory, 目的是对属性对象进行清理和回收。一旦对象被回收了,除非它被重新初始化,否则就不能被再次使用。
(3) 初始化一个线程属性对象后,可以调用许多其他的函数来设置不同的属性行为。(完整的函数列表见手册页,通常位于pthread.h条目下)。可以使用的线程属性非常多,但幸运的是,通常不需要设置太多属性就可以让程序正常工作。