美文网首页
linux线程创建

linux线程创建

作者: 嵌入式工作 | 来源:发表于2018-11-07 15:41 被阅读0次

    1线程创建方法

    pthread_create(&trd,NULL,creat1,(void*)b);
    第二个参数为线程属性,通常为空
    参数

    第一个参数为指向线程标识符的指针。

    第二个参数用来设置线程属性。

    第三个参数是线程运行函数的地址。

    最后一个参数是运行函数的参数。

    注意

    在编译时注意加上-lpthread参数,以调用静态链接库。因为pthread并非Linux系统的默认库

    2编译运行结果,主线程main和线程pthread交替执行。也就是说是当我们创建了线程pthread之后,两个线程都在执行,证明创建成功

    test@ubuntu:~/test$ gcc -o trd thread.c -l pthread
    test@ubuntu:~/test$ ./trd 
    creat thread 
    temp->a= 4
     temp->s=**test msg**
    creat ok 
    

    3测试源码

    #include<sys/types.h>
    #include <sys/stat.h>
    #include <errno.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <pthread.h>
    struct member
    {
        int a;
        char *s;
    };
    void *creat1(void *arg)
    {
    struct member *temp;
    temp=(struct member*)arg;
     sleep(5);
    printf("temp->a= %d\n temp->s=%s\n",temp->a,temp->s);
    
    return   (void*)0;
        
    }
    int main(int argc,char*argv[])
    {
        pthread_t trd;
        int error;
        struct member *b;
        
        b= (struct member*)malloc(sizeof(struct member));
        b->a=4;
        b->s="**test msg**";
        
        printf("creat thread \n");
        error = pthread_create(&trd,NULL,creat1,(void*)b);
        if(error)
        {
            printf("pthread_creat fail \n");
            exit(-1);
        }
        sleep(10);
        printf("creat ok \n");
        return 0;
        
    }
    
    
    

    4.阻塞线程方法

    pthread_join(trd,NULL);//等待trd线程结束

    相关文章

      网友评论

          本文标题:linux线程创建

          本文链接:https://www.haomeiwen.com/subject/feevxqtx.html