免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4828 | 回复: 3
打印 上一主题 下一主题

[服务应用] 多线程程序编译时加入了 -lpthread,但仍提示对‘pthread_creat’未定义的引用 [复制链接]

论坛徽章:
1
申猴
日期:2013-09-03 17:48:13
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-16 23:05 |只看该作者 |倒序浏览
如题,在.c文件用也加入了#include<pthread.h>,但还是通不过编译,提示对‘pthread_creat’未定义的引用,求高手指导
代码如下:
  1. #include<stdio.h>
  2. #include<pthread.h>
  3. #include<errno.h>
  4. #include<string.h>
  5. #include<errno.h>
  6. #include<stdlib.h>

  7. void cleanup(void *arg)
  8. {
  9.     printf("cleanup: %s\n",(char *)arg);
  10. }

  11. void * func1(void *arg)
  12. {
  13.     printf("pthread 1 start");
  14.     pthread_cleanup_push( cleanup, "thread 1 first handler" );
  15.     pthread_cleanup_push( cleanup, "thread 1 second handler" );
  16.     printf("have push 2 handler into stack");
  17.     if(arg)
  18.       return ((void *)1);
  19.     pthread_cleanup_pop(0);
  20.     pthread_cleanup_pop(0);
  21.     return ((void *)2);
  22. }
  23. void * func2(void *arg)
  24. {
  25.     printf("pthread 2 start");
  26.     pthread_cleanup_push( cleanup, "thread 2 first handler" );
  27.     pthread_cleanup_push( cleanup, "thread 2 second handler" );
  28.     printf("have push 2 handler into stack");
  29.     if(arg)
  30.         pthread_exit(NULL);
  31.     pthread_cleanup_pop(0);
  32.     pthread_cleanup_pop(0);
  33.     return ((void *)2);
  34. }

  35. int main(int argc, char *argv[])
  36. {
  37.     pid_t pid;
  38.     pthread_t tid1, tid2;
  39.     int err;
  40.     void *pointer;

  41.     err = pthread_creat( &tid1, NULL, func1, (void *)1 );
  42.     if(err !=0)
  43.         printf("creat pthread1 error %s\n", strerror(err));

  44.     err = pthread_creat( &tid2, NULL, func2, (void *)1 );
  45.     if(err !=0)
  46.         printf("creat pthread2 error %s\n", strerror(err));

  47.     err = pthread_join(tid1,&pointer );
  48.     if(err !=0)
  49.           printf("pthread1 join error %s\n", strerror(err));
  50.     printf("pthread 1 have finished %d\n", (int)pointer);
  51.     err = pthread_join(tid1,&pointer );
  52.     if(err !=0)
  53.           printf("pthread1 join error %s\n", strerror(err));
  54.     printf("pthread 2 have finished %d\n", (int)pointer);
  55.     exit(0);
  56. }
  57.                                                                                                                                      1,1          顶端
复制代码

论坛徽章:
0
2 [报告]
发表于 2013-03-17 16:53 |只看该作者
pthread_creat?系统有这个函数?....哥,老老实实的对着书本来操坐,多看点说吧。。。。

论坛徽章:
1
申猴
日期:2013-09-03 17:48:13
3 [报告]
发表于 2013-03-17 21:46 |只看该作者
弟,我就是对着书打进去的,打错了
不过还是谢了
回复 2# liupingpinggood


   

论坛徽章:
0
4 [报告]
发表于 2013-03-18 21:33 |只看该作者
这。。。。。。。。。回复 3# wangjc_strive


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP