|
Boost : |
From: Sam Partington (sam.partington_at_[hidden])
Date: 2006-07-25 05:46:34
On 18/07/06, Sohail Somani <s.somani_at_[hidden]> wrote:
> I just don't see the point, except as an academic exercise
I used a similar technique when I wrote a subset of some of Kevlin
Henney's threading concepts [1].
I wanted to extend it so exceptions could be propagated from the
thread function to the calling thread. The client code looked like
this :
// code begins...
std::string my_function();
joiner<std::string> joiner = thread(my_function,
catch_<std::runtime_error, my_app_specific_error>());
// parallel work here
std::string result = joiner();
// ...ends
joiner::operator() may throw std::runtime_error,
my_app_specific_error, or std::bad_exception if the exception could
not be mapped.
Of course exceptions are sliced, but support could be added for
cloning if the exception hierarchy supported it (through ADL perhaps).
Anyway, I make use of it quite a bit and I've never found the slicing
to be a problem - typically you know what you expect to catch
So I can see at least one non-academic use for it.
Sam
[1] http://www.two-sdg.demon.co.uk/curbralan/papers/accu/MoreC++Threading.pdf
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk