zoukankan      html  css  js  c++  java
  • linux线程回收

    int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                       void *(*start_routine) (void *), void *arg);
    
    void pthread_exit(void *retval);

    1. 设置线程属性
    如果线程创建时,attr属性设置为NULL,那么线程采用默认的属性joinable。需要将属性设置为detached

    int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
    int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate);
    
    pthread_t thread_id;
    pthread_attr_t attr;
    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
    pthread_create(&thread_id, &attr, func, NULL);
    pthread_attr_destroy(&attr);

    2. pthread_join
    阻塞等待线程退出,并清理(类似于wait, waitpid)

    int pthread_join(pthread_t thread, void **retval);
    
    pthread_join(thread, (void**)&thread_ret); //父线程调用
    printf("thread_ret = %d.
    ", *thread_ret);

    3. pthread_detach 非阻塞

    int pthread_detach(pthread_t thread);
    
    pthread_detach(pthread_self()); //子线程调用
  • 相关阅读:
    常见SQL语句
    测试用例的设计
    移动端测试注意事项
    markdown编辑模式基本使用
    常用修改请求或返回方法
    前端性能测试工具Lighthouse
    presto环境部署
    pyenv管理python版本
    python2.6.6升级python2.7.14
    InfluxDB权限认证机制
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709913.html
Copyright © 2011-2022 走看看