下面总结一下linux下多线程的创建和传参,这里的传的参数是结构体的地址,然后在子线程中输出所传结构体对象的值。
实现过程非常简单,其中pthread_create()创建子线程,pthread_join()是等待阻塞子线程结束,pthread_exit()是子线程退出函数,typedef struct _config{}config;表示给结构体取别名。
#include <stdio.h>
#include <pthread.h>
typedef struct _config
{
int id;
char *name;
}config; //结构体别名
void* func(void* arg)
{
printf("child...\n");
printf("arg.id is:%d\n",((config*)arg)->id);
printf("arg.name is:%s\n",((config*)arg)->name);
pthread_exit(NULL); //子线程退出
}
int main()
{
pthread_t thread;
config conf;
conf.id=3; //结构体赋值
conf.name="liubei";
if(pthread_create(&thread,NULL,func,&conf)) //传结构体地址
{
perror("create:");
return -1;
}
pthread_join(thread,NULL); //阻塞等待子线程结束
//sleep(2);
printf("main...\n");
return 0;
}
接下来总结多线程之间同步的互斥锁。