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线程结束
网友评论