有人可以通过修改下面的代码来显示一个简单但完整的示例,说明如何使用Boost异常库在线程之间传输异常?C++ Boost代码在线程间抛出异常的示例
我正在实现的是一个简单的多线程委托模式。
class DelegeeThread
{
public:
void operator()()
{
while(true)
{
// Do some work
if(error)
{
// This exception must be caught by DelegatorThread
throw std::exception("An error happened!");
}
}
}
};
class DelegatorThread
{
public:
DelegatorThread() : delegeeThread(DelegeeThread()){} // launches DelegeeThread
void operator()()
{
while(true)
{
// Do some work and wait
// ? What do I put in here to catch the exception thrown by DelegeeThread ?
}
}
private:
tbb::tbb_thread delegeeThread;
};
哇......发帖后10小时,没有人给出答案?我是否严肃地说出我的问题,还是难以解决这个问题? – sivabudh 2009-09-04 02:48:34
我会记住,不管你最终实现的是什么,都可能不是你期望的。当DelegeeThread想要在另一个线程中触发异常时,Delegator可能会做一些不相关的工作或者可能已经终止,因此catch可能会延迟或根本不会发生。 – asveikau 2009-10-08 23:00:23
当然,你提到的观点,我同意。 – sivabudh 2009-10-09 22:41:50