45 /* 声明结构体 */ 6 struct member 7 {
8 int num; 9 char *name;10 }; 11
12 /* 定义线程pthread */
13 static void * pthread(void *arg) 14 {
15 struct member *temp;16
17 /* 线程pthread开始运⾏ */18 printf(\"pthread start!\\n\");19
20 /* 令主线程继续执⾏ */21 sleep(2);22
23 /* 打印传⼊参数 */
24 temp = (struct member *)arg;
25 printf(\"member->num:%d\\n\",temp->num);26 printf(\"member->name:%s\\n\",temp->name);27
28 return NULL;29 }30
31 /* main函数 */
32 int main(int agrc,char* argv[])33 {
34 pthread_t tidp;35 struct member *b;36
37 /* 为结构体变量b赋值 */
38 b = (struct member *)malloc(sizeof(struct member)); 39 b->num=1;
40 b->name=\"mlq\"; 41
42 /* 创建线程pthread */
43 if ((pthread_create(&tidp, NULL, pthread, (void*)b)) == -1)44 {
45 printf(\"create error!\\n\");46 return 1;47 }48
49 /* 令线程pthread先运⾏ */50 sleep(1);51
52 /* 线程pthread睡眠2s,此时main可以先执⾏ */53 printf(\"mian continue!\\n\");54
55 /* 等待线程pthread释放 */
56 if (pthread_join(tidp, NULL)) 57 {
58 printf(\"thread is not exit...\\n\");59 return -2;60 }61
62 return 0;63 }
编译与执⾏结果
编译与执⾏结果如下图所⽰,可以看到主线程main和线程pthread交替执⾏。也就是说是当我们创建了线程pthread之后,两个线程都在执⾏,证明创建成功。另外,可以看到创建线程pthread时候,传⼊的参数被正确打印。