• 线程分离


    线程分离的作用:当主线程与新线程无关时,主线程无需等待新线程的结束。

    1、进程属性初始化

    pthread_attr_t pth_attr; 
    pthread_attr_init(&pth_attr);
    2、进程分离属性设置。

    pthread_attr_setdetachstate(&pth_attr,PTHREAD_CREATE_DETACHED);

    3、进程创建。

    4、进程属性资源回收。

    pthread_attr_destroy(&pth_attr);

    #include<stdio.h>
    #include<string.h>
    #include<unistd.h>
    #include<stdlib.h>
    #include<pthread.h>
    
    void *thread_func(void *arg);
    #define handle_error(msg) 
        do { perror(msg); exit(EXIT_FAILURE);} while(0)
    char message[] = "hello Ruanchao!";
    int finish=0;
    int main() {
        int res;
        pthread_t thread;
        pthread_attr_t pth_attr;
        
        res = pthread_attr_init(&pth_attr);
        if (res != 0) 
            handle_error("pthread initial is failed!");
        res = pthread_attr_setdetachstate(&pth_attr,PTHREAD_CREATE_DETACHED);
        if(res != 0)
            handle_error("pthread set attr failed!");
        res = pthread_create(&thread,&pth_attr,thread_func,(void *)message);
        if(res != 0)
            handle_error("thread creation is failed!");
        (void)pthread_attr_destroy(&pth_attr);
        while(!finish) {
            printf("Waiting for thread to end!
    ");
            sleep(1);
        }
        printf("thread were finished!
    ");
        exit("EXIT_FAILURE");
    }
    void *thread_func(void *arg){
        printf("thread_func is running,argument is %s
    ",(char *)arg);
        sleep(5);
        finish = 1;
        pthread_exit(NULL);
    }
  • 相关阅读:
    试题 历届试题 国王的烦恼
    试题 历届试题 九宫重排
    试题 历届试题 网络寻路
    试题 历届试题 危险系数
    试题 历届试题 横向打印二叉树
    试题 历届试题 幸运数
    试题 历届试题 大臣的旅费
    试题 历届试题 连号区间数
    Linux多进行之fork
    linux C语言getopt()函数的使用
  • 原文地址:https://www.cnblogs.com/farbeyond/p/4488758.html
Copyright © 2020-2023  润新知