多线程pthread编程
来源:百度文库 编辑:神马文学网 时间:2024/04/28 02:27:58
知识点一
1、pthread_create
pthread_join
pthread_exit
pthread_cancel
二、线程资源的释放
1、线程占用的系统资源的释放
pthread_create创建的线程有两种状态:
1)、“joinable state”(它的值为PTHREAD_CREATE_JOINABLE)。pthread_create创建线程时默认即为“joinable state”。
这种线程意味着,应该在另一个线程中通过pthread_join 连接到本线程,在本线程结束之后,pthread_join才会返回,才会释放资源。如果没有使用pthread_join连接,则在线程结束时会导致线程资源泄露。
2)、“detached state”(值为PTHREAD_CREATE_DETACHED)。
这种线程在线程结束时,可以自动释放资源。其创建过程如下:
pthread_t t;
pthread_attr_t attr; //这里设置为“detached state”
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
if (pthread_create(&t,&attr, threadProc, NULL))
{
perror("create");
}
注意,上面提到的资源释放,是指系统为线程分配的资源。
2、非正常退出时线程资源的处理
在线程中由用户自己分配的资源,也应该由用户自己来释放。但是,有时候,线程是非正常结束,可能没有运行到资源释放部分就中止运行了。这时候资源的释放,需要用到下面的知识点:
1)、pthread_cleanup_push、pthread_cleanup_pop
参见:http://www.360doc.com/showWeb/0/0/67710386.aspx
1、pthread_create
pthread_join
pthread_exit
pthread_cancel
二、线程资源的释放
1、线程占用的系统资源的释放
pthread_create创建的线程有两种状态:
1)、“joinable state”(它的值为PTHREAD_CREATE_JOINABLE)。pthread_create创建线程时默认即为“joinable state”。
这种线程意味着,应该在另一个线程中通过pthread_join 连接到本线程,在本线程结束之后,pthread_join才会返回,才会释放资源。如果没有使用pthread_join连接,则在线程结束时会导致线程资源泄露。
2)、“detached state”(值为PTHREAD_CREATE_DETACHED)。
这种线程在线程结束时,可以自动释放资源。其创建过程如下:
pthread_t t;
pthread_attr_t attr; //这里设置为“detached state”
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
if (pthread_create(&t,&attr, threadProc, NULL))
{
perror("create");
}
注意,上面提到的资源释放,是指系统为线程分配的资源。
2、非正常退出时线程资源的处理
在线程中由用户自己分配的资源,也应该由用户自己来释放。但是,有时候,线程是非正常结束,可能没有运行到资源释放部分就中止运行了。这时候资源的释放,需要用到下面的知识点:
1)、pthread_cleanup_push、pthread_cleanup_pop
参见:http://www.360doc.com/showWeb/0/0/67710386.aspx
多线程pthread编程
多线程编程
多线程编程
多线程编程
Java多线程编程总结
Java多线程编程总结
Java多线程编程详解
delphi多线程编程2
delphi多线程编程
Java多线程编程总结
多线程编程二
多线程编程三
Linux下的多线程编程
Java 5.0 多线程编程实践
QNX环境下多线程编程
Java 5.0 多线程编程实践
QNX环境下多线程编程
多线程编程浅析 -- 多线程的互斥与同步
面向对象多线程编程之 前言
Linux系统下的多线程编程入门
多线程编程——实战篇(二)
多线程编程——实战篇(三)
Java 5.0多线程编程——2
JAVA培训Java多线程编程精要