一、代码
// #include <stdio.h> #include <stdlib.h> #include <pthread.h> /* define struct */ struct member { int num; char *name; }; /* 定义线程pthtead */ static void *pthread(void *arg) { struct member *tmp; /* 线程开始运行 */ printf("pthread start!\n"); /* 令主线程继续执行 */ sleep(2); /* 打印传入参数 */ tmp = (struct member *)arg; printf("member->num: %d\n", tmp->num); printf("member->name: %s\n", tmp->name); return NULL; } int main(int argc, char **argv) { pthread_t tid; struct member *b; if (argc != 2) { fprintf(stderr, "usage: %s <name>\n", argv[0]); exit(0); } /* 为结构体变量b赋值 */ b = (struct member *)malloc(sizeof(struct member)); b->num = 1; b->name = argv[1]; /* 创建线程pthread */ if ((pthread_create(&tid, NULL, pthread, (void *)b)) == -1) { printf("create error!\n"); return 1; } /* 令线程pthread先运行 */ sleep(1); /* 线程pthread睡眠2s,此时main可以先执行 */ printf("main continue!\n"); /* 等待线程pthread释放 */ if (pthread_join(tid, NULL)) { printf("thread is not exit...\n"); return -2; } return 0; } //
二、运行
三、分析
1、pthread_create(&tid, NULL, pthread, (void *)b)函数中的第四个参数是赋值给函数pthread的。