linux线程创建

2018-11-07  本文已影响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线程结束

上一篇 下一篇

猜你喜欢

热点阅读