返回信息流int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void * (*func)(void *), void *arg);
上面是pthread_create的函数声明,两个问题:
1. 定义了一个函数void *test(void *arg),为什么调用的时候下面两种方法都可以:
pthread_create(&tid, NULL, test, NULL);
pthread_create(&tid, NULL, &test, NULL);
2. 在test函数中只打印一条语句:printf("hello world\n");
为什么只有在主线程当中使用pthread_join()的时候才会打印出结果?
求各位大神帮忙解答,多谢多谢~
这是一条镜像帖。来源:北邮人论坛 / cpp / #88994同步于 2015/10/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
pthread问题
ricann
2015/10/6镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
第一个问题,函数名就是其地址,使用&也是取其地址,这2种方式的地址都是一样的,即函数名地址和函数名取地址的值是相同的,不需要太多深究,记住就可以了。
第二个问题,如果代码中如果没有pthread_join,那么主线程会很快结束,整个进程也就结束了,创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行,然后就有输出了啊。
明白了,谢谢指点~
【 在 YouXia 的大作中提到: 】
: 第一个问题,函数名就是其地址,使用&也是取其地址,这2种方式的地址都是一样的,即函数名地址和函数名取地址的值是相同的,不需要太多深究,记住就可以了。
: 第二个问题,如果代码中如果没有pthread_join,那么主线程会很快结束,整个进程也就结束了,创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行,然后就有输出了啊。