C++ 使用线程时,处理错误的正确方法是什么?

C++ 使用线程时,处理错误的正确方法是什么?,c++,multithreading,C++,Multithreading,在我的项目中,由于某种原因,我正在以挂起状态创建线程,在某种状态之后,我将恢复线程。因此,当恢复线程时,有时可能有效,有时无效。那么,如果错误不起作用,正确的处理方法是什么??我应该重试以恢复线程,还是应该等待一段时间或任何可能的适当处理机制??请指导我处理这些场景的最佳方法。我在这里使用ACE线程库。我可以推荐一个吗?一个简单的实现就是一组更新,其中向量中的每个值表示一个更新,比如加载一个资产,其更新架构将包括成功/错误代码和文件名,或者让另一个线程知道某个键已按下/释放 编辑: 正如Damo

在我的项目中,由于某种原因,我正在以挂起状态创建线程,在某种状态之后,我将恢复线程。因此,当恢复线程时,有时可能有效,有时无效。那么,如果错误不起作用,正确的处理方法是什么??我应该重试以恢复线程,还是应该等待一段时间或任何可能的适当处理机制??请指导我处理这些场景的最佳方法。我在这里使用ACE线程库。

我可以推荐一个吗?一个简单的实现就是一组更新,其中向量中的每个值表示一个更新,比如加载一个资产,其更新架构将包括成功/错误代码和文件名,或者让另一个线程知道某个键已按下/释放

编辑:


正如Damon所说,您还需要一个线程,因此一次只有一个线程在编辑消息队列。

为什么该线程不能工作?它返回什么错误?它有时不工作。它返回状态0。它不工作是不够的。也许你可以提供它应该执行的代码。也许您可以尝试返回不同的错误代码来显示线程中的进度。如何启动线程?具体地说,您需要指定它不工作的是什么,线程不是启动,还是线程运行,但不能做一些事情,比如打开一个不存在的文件,或者线程会引起C++或硬件异常的异常吗?这些都是非常不同的事情。挂起和恢复线程是危险的,一个线程应该在与信号量无关时阻塞,并且应该使用某种通知解除阻塞,就像另一个线程发出信号量一样。消息队列通常是一个很好的建议,考虑到线程,即使OP的实际问题还不清楚。但是你应该在你的建议中增加一个互斥和一个互斥,只使用一个std::vector,我个人也宁愿使用一个ringbuffer-vector对于这个目的来说并不是很好。@Damon是的,完全忘记了一个。。。