LinuxSir.cn,穿越时空的Linuxsir!

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

线程启动问题

[复制链接]
发表于 2007-8-17 17:08:07 | 显示全部楼层 |阅读模式
我写了一个很简单的测试线程工作的程序如下:

  1. int
  2. main()
  3. {
  4.         pthread_t tid;
  5.         int err;

  6.         err = pthread_create(&tid, NULL, thread1, NULL);
  7.         if (err < 0)  {
  8.                 printf("thread create error\n");
  9.                 return -1;
  10.         }
  11.         return 0;
  12. }

  13. void *
  14. thread1()
  15. {
  16.         printf("thread 1 started\n");
  17. }

复制代码


但是就是这个小程序出了很多让人不解的问题:
1.pthread_t tid必须初始化,不然工作不了
2.thread1()必须定义成void形式,然后在create的时候显示转换为(void*(*)(void *))类 型,不然编译报错
3.即使上面两步都做好了,程序执行时会马上返回,没有任何信息,将线程设置为detach也不行,必须join才行

为什么会出现这些情况啊,以前都没有碰见过,百思不得其解,希望各位帮帮忙,给我讲讲到底怎么回事。

p.s. 系统SUSE gcc 4.1这是公司系统
在家自己用slackware 12 gcc也是4.1没有上面的问题。
难道是发行版的问题吗???
发表于 2007-8-17 18:11:33 | 显示全部楼层
你创建完线程后,主程序立即退出了~~
pthread_join(tid,NULL);
pthread_cancel(tid);
回复 支持 反对

使用道具 举报

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

本版积分规则

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