当前位置:  技术问答>linux和unix

pthread的高级问题?

    来源: 互联网  发布时间:2015-06-29

    本文导语:  大家可以做一个测试,我在RED HAT 8.0 写了一个小程序: #include  #include  void *run(void  *arg) {   sleep(30); } int main() {   pthread_t id;   pthread_create(&id,NULL,run,NULL);   sleep(100); } 运行后,用 ps -ef 查看时只显示一个进程 P...

大家可以做一个测试,我在RED HAT 8.0 写了一个小程序:
#include 
#include 

void *run(void  *arg)
{
  sleep(30);
}
int main()
{
  pthread_t id;
  pthread_create(&id,NULL,run,NULL);
  sleep(100);
}
运行后,用 ps -ef 查看时只显示一个进程
PID   PPID     name
1234  200     a.out
用 ps -efm 查看进程线程时:
PID   PPID    name
1234  200     a.out
1235  1234    a.out 
1236  1235    a.out 

我现在可以说: 1234 是进程ID,1235 是主线程ID,1236是创建的线程ID,运行函数是run.一般来说主线程1235是不会defunct的.因为我们没法处理.但是我的程序就出现了,当运行到三五天.就会出现如下状态:
PID   PPID    name
1234  200     a.out
1235  1234    a.out(defunct)
1236  1       a.out 

现在问题是 1235 号线程是怎么僵死的? 什么原因可能导致?
( 可以通过发送 kill -9 1235 出现这种状态. 但发送kill -9 1234 或 kill -9 1236,a.out 程序都退出.)
谢谢?








|

默认情况id线程不会自行结束的
要用pthread_join(),或是设置id线程属性为PTHREAD_CREATE_DETACHED(分离线程)

|
int main()
{
  pthread_t id;
  pthread_create(&id,NULL,run,NULL);
  while(1)
  {}
}

主线程退出了!!加while(1){}不要退出主线程试试看!

|
http://www-900.ibm.com/developerWorks/cn/linux/kernel/l-thread/index.shtml

参考一下

    
 
 

您可能感兴趣的文章:

  • 问一个关于pthread线程删除(取消)的问题
  • linux下运行pthread库出错的问题
  • pthread 阻塞问题
  • 求助!pthread与Win32 API线程库的对应问题
  • 请教一个pthread线程库的使用的问题
  • 关于pthread_cancel()之后的内存问题
  • 关于pthread_create函数的问题
  • pthread_create的问题
  • 关于pthread_cond_wait的几个问题
  • 线程锁函数pthread_cleanup_push()编译问题,急!
  • pthread共享模式链接时是不是有问题啊?
  • pthread_cleanup_push的小问题?
  • 关于pthread_mutex_lock的问题,请教各位
  • 初始化pthread_mutex_t变量的问题?????
  • 急 关于 pthread_cond_timedwait() 超时后的问题!!!在线等
  • pthread_create函数执行问题
  • 在pthread function 里面我用new 分配的内存问题 。。。
  • 无法使用pthread_creat()函数的问题
  • 有关使用pthread_creat时的参数传递问题!!!
  • pthread_create 的问题 ,求救大家!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);和pthread_detach(pthread_self()); 有区别吗。怎么我执行的效果不一样
  • pthread_attr_init()及pthread_cond_wait使用疑惑
  • pthread_cond_signal和pthread_cond_wait两个函数是怎么意思?
  • 包含了#include <pthread.h>,为什么还有pthread_create错误?
  • 先pthread_cancel()再pthread_join(),主线程退出?
  • 请问pthread_mutex_lock()和pthread_mutex_unlock()可不可以用于对不同进程的线程进行同步。
  • 请问一下红色字体处的区别,及pthread_self()和pthread_creat()函数第一个参数的区别?
  • pthread_cond_wait 之前的 pthread_mutex_lock 语句 有什么作用,可以不用吗?
  • pthread_cancel和pthread_cond_wait
  • pthread_cond_t和pthread_mutex_t的疑问?
  • pthread_cond_t进入等待状态,则pthread_mutex_t无效...
  • LINUX关于pthread_create 和pthread_join
  • Pthread
  • pthread_create成功返回,但pthread_kill(thrdid, 0)返回说进程不存在?
  • pthread_cond_timedwait用来让线程睡眠无效?
  • pthread_cond_timedwait用法
  • 关于线程pthread.h
  • Unix中PThread是干什么用的,创建线程吗---小妹
  • 为什么我在man中查不到有关pthread的帮助?
  • 一个pthread_create 编译出错,是什么原因啊


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3