C++ 监视线程的状态
下面是一段代码C++ 监视线程的状态,c++,multithreading,C++,Multithreading,下面是一段代码 if(ESRCH == pthread_kill(Thread_Id,0)) start_Thread_Again 检查线程是否意外退出的好方法?我们可以用类似的方法吗 wait(-1,W_NOHANG) “意外退出?”线程不会意外退出,它退出是因为您的代码告诉它这样做[意味着如果您不希望它退出,您就有一个bug] 从pthread_kill的手册页中:“与kill()一样,如果sig为零,则应执行错误检查,但实际上不应发送任何信号。” 您的
if(ESRCH == pthread_kill(Thread_Id,0))
start_Thread_Again
检查线程是否意外退出的好方法?我们可以用类似的方法吗
wait(-1,W_NOHANG)
“意外退出?”线程不会意外退出,它退出是因为您的代码告诉它这样做[意味着如果您不希望它退出,您就有一个bug]
从pthread_kill
的手册页中:“与kill()一样,如果sig为零,则应执行错误检查,但实际上不应发送任何信号。”
您的代码错误,它必须检查是否相等。线程不会意外退出,它退出是因为您的代码告诉它这样做[如果您不希望它退出,则意味着您有一个错误]
从pthread_kill
的手册页中:“与kill()一样,如果sig为零,则应执行错误检查,但实际上不应发送任何信号。”
你的代码是错误的,它必须检查是否相等。很难确定,因为你的问题中几乎没有上下文。但这表明一个人以一种完全错误的方式思考线程 一段典型的应用程序代码没有理由关心另一个线程具体在做什么。您可能关心正在完成的某些工作的状态,但这种关注在逻辑上应该与线程当时可能正在做或不做的工作无关
如果你的问题是某项工作是否完成,或者是否正在处理某项任务,那么就看与该工作或任务相关的结构。这些结构不会与特定的线程关联,而是与需要完成的事情关联。很难确定,因为您的问题中几乎没有上下文。但这表明一个人以一种完全错误的方式思考线程 一段典型的应用程序代码没有理由关心另一个线程具体在做什么。您可能关心正在完成的某些工作的状态,但这种关注在逻辑上应该与线程当时可能正在做或不做的工作无关
如果您的问题是某项工作是否已完成或某项任务是否正在进行,请查看与该工作或任务相关的结构。这些结构不会与特定的线程关联,而是与需要完成的任务关联。线程是分离的还是可连接的?那么代码是非法的。如果线程已终止,则其线程ID不再有效。所以,不,这不是一个好办法。它将在线程ID为指针的平台上崩溃。;)线程是分离的还是可连接的?那么代码是非法的。如果线程已终止,则其线程ID不再有效。所以,不,这不是一个好办法。它将在线程ID为指针的平台上崩溃。;)