当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

如何正确的使用线程 释放线程资源

    你建立的线程在退出后是否释放了资源呢?


    当你需要建立许多线程(虽然已经退出)后发现无法再建立(通常在服务器程序设计等地方用到),到这时才想到要如何正确的建立线程就。。。。。。

    通常有两种情况:1.需要等待线程的退出;2.不能等待退出。线程的也是建立于以下两种状态1.“joinable state”
    (它的值为PTHREAD_CREATE_JOINABLE);2.“detached  state” (值为PTHREAD_CREATE_DETACHED)。在默认情况下
    “joinable state”。

    对第一种情况的正确做法的例子如下:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <pthread.h>
    #include <unistd.h>

    void* child(void* arg)
    {
     ... ...
     return arg;
    }

    int main(void)
    {
     pthread_t t;

     if (pthread_create(&t, &a, child, NULL)){
      perror("create");
     }

     pthread_join(t, NULL);
    }


    对第二情况的正确做法的例子如下:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <pthread.h>
    #include <unistd.h>

    void* child(void* arg)
    {
     ... ...
     return arg;
    }

    int main(void)
    {
     pthread_t t;
     pthread_attr_t a;

     //这里设置为“detached  state”
     pthread_attr_init(&a);
     pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED);


      if (pthread_create(&t, &a, child, NULL)){
       perror("create");
      }
     ... ... //做其它事情
    }

相关内容
赞助商链接