LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1461|回复: 4

帮忙看下这个程序的pthread_create函数为什么没有执行??

[复制链接]
发表于 2007-11-6 21:53:47 | 显示全部楼层 |阅读模式
#include<stdio.h>
#include<pthread.h>
void print_message_function( void *ptr );
   int main( )
    {
     pthread_t thread1, thread2;
     //pthread_attr_t* pthread_attr_default;
     char *message1 = "Hello";
     char *message2 = "World " ;
     pthread_create( &thread1, /*pthread_attr_default*/NULL,
      print_message_function, (void*) message1);
     pthread_create(&thread2,/*pthread_attr_default*/NULL,
      print_message_function, (void*) message2);      
     return 0;
    }
    void print_message_function( void *ptr )
    {
     char *message;
     message = (char *) ptr;
     printf("%s \n", message);
    }
执行a.out 结果没有任何输出??
发表于 2007-11-7 09:47:51 | 显示全部楼层
因为 print_message_function 在得到执行之前,主函数就已经退出了。你需要 pthread_join 一下等线程执行完。
回复 支持 反对

使用道具 举报

发表于 2007-11-7 15:21:02 | 显示全部楼层
楼上的本本 cpu莫非是龙芯
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-7 15:52:29 | 显示全部楼层
谢谢manphiz这位朋友,你说的对,不过我用sleep(),执行时有结果。
回复 支持 反对

使用道具 举报

发表于 2007-11-7 20:19:17 | 显示全部楼层
Post by mscao;1778662
谢谢manphiz这位朋友,你说的对,不过我用sleep(),执行时有结果。

sleep 的作用是一样的,都是留出时间等待线程执行,只是这样做未必能留出足够的  window 。建议多看看线程同步方面的内容。
Post by x11
楼上的本本 cpu莫非是龙芯

惭愧,仍然是洋货(Dothan 1.5G),只不过是国产本本,散热不好,玩 gentoo 时碰到 memory hog ,结果达到 100C 过热关机。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表