¿Puede alguien mostrar un ejemplo simple pero completo de cómo se podría usar la biblioteca de excepción de Boost para transferir excepciones entre hilos modificando el código a continuación?C++ Boost Code ejemplo de lanzar una excepción entre hilos
Lo que estoy implementando es un patrón simple de delegado de subprocesos múltiples.
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;
};
wow ... 10 horas después del mensaje, y nadie respondió? ¿Le dije mal mi pregunta o este problema es difícil? – sivabudh
Me gustaría tener en cuenta que cualquier cosa que termine implementando podría no ser lo que espera. cuando DelegeeThread desea desencadenar una excepción en el otro hilo, el Delegador probablemente realizará un trabajo no relacionado o podría haber finalizado, por lo que la captura podría retrasarse o no ocurrir. – asveikau
seguro, el punto que mencionaste, estoy de acuerdo. – sivabudh