Czy ktoś może pokazać prosty, ale pełny przykład, w jaki sposób można użyć biblioteki wyjątków Boost do przenoszenia wyjątków między wątkami, modyfikując poniższy kod?C++ Boost Code przykład rzucania wyjątku między wątkami
To, co implementuję, to prosty wielowątkowy wzorzec delegata.
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 godzin po poście, a nikt nie udzielił odpowiedzi? czy źle wyraziłem moje pytanie, czy ten problem jest trudny? – sivabudh
Pamiętam, że cokolwiek kończy się wdrażaniem, może nie być tym, czego oczekujesz. kiedy DelegeeThread chce wywołać wyjątek w innym wątku, Delegujący prawdopodobnie wykona jakąś niepowiązaną pracę lub może już zakończyć działanie, więc wstrzymanie może być opóźnione lub wcale się nie zdarzyć. – asveikau
Oczywiście, o czym wspomniałeś, zgadzam się. – sivabudh