多线程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