Linux 如何确定线程是否完成其工作

Linux 如何确定线程是否完成其工作,linux,multithreading,Linux,Multithreading,这里我有一个任务,我将任务划分为许多子任务,然后创建许多线程,每个线程处理一个子任务。我的问题是,如果这些线程中的一个或某些线程发生错误并退出而没有完成它的子任务,那么我如何才能找出哪些线程发生错误并修复失败。 我可以用日志记录每个线程的状态吗? 或者我可以使用一些线程句柄技术,比如pthread_join?join,它只会通知您生命的结束,所以它可能是成功的,也可能是失败的。每个线程可能会指定一个标志,指示其在失效、成功或失败之前的成功状态。您还可以让每个线程将其状态写入一个原子变量。C++1

这里我有一个任务,我将任务划分为许多子任务,然后创建许多线程,每个线程处理一个子任务。我的问题是,如果这些线程中的一个或某些线程发生错误并退出而没有完成它的子任务,那么我如何才能找出哪些线程发生错误并修复失败。 我可以用日志记录每个线程的状态吗?
或者我可以使用一些线程句柄技术,比如pthread_join?

join,它只会通知您生命的结束,所以它可能是成功的,也可能是失败的。每个线程可能会指定一个标志,指示其在失效、成功或失败之前的成功状态。您还可以让每个线程将其状态写入一个原子变量。C++11支持将来的返回值。查看std::async和std::future。返回值可以是状态枚举,指示线程是否成功完成。您可以启动一组异步,然后计算所有未来的值。好的,我将尝试未来的值。非常感谢。对不起,您的工作是什么意思?pthread_join是考虑线程已完成的一个好语义,因为它在完成执行后无法执行任何操作。但另一种方式的信号是告诉我已经完成了一些事情,但不是在发出信号后我能做的所有事情。