监视线程的状态

时间:2012-01-08 14:10:08

标签: c++ multithreading

以下是一段代码

  if(ESRCH == pthread_kill(Thread_Id,0))
            start_Thread_Again

检查我的线程是否意外退出的好方法?我们可以使用它类似于

   wait(-1,W_NOHANG)

2 个答案:

答案 0 :(得分:4)

“意外退出?”一个线程不会意外退出,它会退出,因为你的代码告诉它这样做[意思是如果你不想让它退出就有一个bug]。

pthread_kill的联机帮助页:“在kill()中,如果sig为零,则应执行错误检查,但实际上不会发送任何信号。”

您的代码错误,必须检查是否相等。

答案 1 :(得分:2)

很难确定,因为你的问题中的背景很少。但它表明一个人以完全错误的方式思考线程。

一些典型的应用程序代码没有理由关心另一个线程具体做什么。您可能关心正在完成的某些工作的状态,但该关注应该在逻辑上独立于当时可能或可能不会执行该工作的线程。

如果您的问题是某些工作是否已完成,或某些任务是否正在进行,请查看与该工作或任务相关的结构。这些结构不会与特定的线程相关联,但需要完成某些事情。