在CThreadPool下从工作线程传输错误信息的最佳方法是什么?

时间:2009-03-06 07:21:53

标签: c++ multithreading error-handling atl

我最近发现了ATL的CThreadPool类,对这个发现非常满意。这是一个简洁的小类,它将处理多个工作线程处理某些队列要执行的同步化语义。通过一些外部过程将任务提供给CThreadPool对象。

现在假设其中一个工作线程遇到错误,或者有异常。我并不是指您希望整个应用程序只是死亡的异常类型,而是您想要更优雅地处理它的事情。优雅地说,我的意思是应用程序可能会死,但我需要做一些清理工作,并在某处发布一个propper消息,告诉它为什么会这样做。

将错误信息(消息,错误代码,来源等)传递给拥有CThreadPool对象的主线程的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

如果我正在使用这个系统,我会使用应用程序的消息处理程序可以响应的自定义事件从错误的任务中获取PostMessage。您应该捆绑所需的任何信息,以便正确清理。

答案 1 :(得分:1)

使用具有同步访问权限的队列来记录队列中的消费者事件的所有错误和线程。