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

怎样能杀死一个未挂起线程??

    来源: 互联网  发布时间:2016-02-27

    本文导语:  应用中有两个线程, 一个任务线程,一个监控线程(监控任务线程的执行情况),任务线程主要通过oci访问数据库,在访问之前 lock,然后执行数据库,访问后unlock,但在执行数据库的函数中,长时间不能返回,监...

应用中有两个线程, 一个任务线程,一个监控线程(监控任务线程的执行情况),任务线程主要通过oci访问数据库,在访问之前 lock,然后执行数据库,访问后unlock,但在执行数据库的函数中,长时间不能返回,监控线程就要把任务线程杀死,并解锁(防止死锁),然后再pthread_creat一个新线程去执行任务,但新线程执行到访问数据库的函数时,整个应用就被系统kill掉了, 我怀疑是我没有把前一个任务线程杀死找成的,可我又不知道怎么杀,

我用的是   pthread_cancel方法,并且state 和type 也已经设置。
且pthread.h中没有pthread_kill方法  

请问该怎么解决这个问题

|
pthread_kill在signal.h中
pthread_kill(tid, SIGKILL);

|
但新线程执行到访问数据库的函数时,整个应用就被系统kill掉了。

这里应该检查一下旧线程是否已经正确cancel,另外可能是旧线程访问数据库的一些临时资源没有释放。

|
有可能是没pthread_join的原因。

static int restart_monitor()
{
pthread_cancel(monitor_thread);
pthread_join(monitor_thread, NULL);

pthread_create(&monitor_thread, NULL, do_monitor, NULL)

return 0;
}

|
用个笨办法system("kill id")

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于杀死进程(高手请进)
  • 问一个shell问题?怎样杀死多个进程。
  • 在程序中杀死进程的一个问题
  • fork之后,在execvl启动telnet,如何杀死该telnet进程?
  • 如何杀死死进程!
  • 有没有这样的函数?(杀死进程)
  • 已知pid文件,实现杀死该进程的shell脚本怎么写?
  • 杀死子进程为何连父进程也被杀了
  • 杀死一个进程是不是它所有的分配内存都释放了?
  • 如何用shell脚本杀死指定名称的进程?
  • 怎样杀死在别的控制台上的用户?
  • linux中用killall命令杀死进程的时候会释放掉该进程所占有的内存吗?
  • linux下我想关闭ftp服务。应该杀死那个端口
  • 执行serlvet后杀死窗口的问题:-)
  • 这样杀死mail进程有错吗?应该是怎样?
  • redhad linux9.0 的命令行中如何终止(杀死)一个服务器进程?
  • 如何自动杀死所有死进程
  • linux 杀死名字相同的kill语句
  • 【如何彻底杀死子进程】Kill -9子进程后进程呈僵死状态
  • 先确定进程是否存在,如在,杀死。怎样实现,谢谢(100分)?


  • 站内导航:


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

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

    浙ICP备11055608号-3