
Le 15/04/12 09:46, Ben Pope a écrit :
On Sunday, April 15, 2012 08:22 AM, Vicente J. Botet Escriba wrote:
E.g. I have started to implement some breaking changes on Boost.Thread as e.g. an incompatibility with the C++11 semantics of the thread destructor. Boost.Thread detach the thread at destruction time, C++11 calls std::terminate if the thread is joinable at destruction time. I have already started the stage 0th and I would like to pass to the stage 1st for the next release.
In this case, it would be useful to have RAII classes for joining and detaching to prevent std::terminate from being called. In fact, I think Anthony writes in his book that scope based thread_joiner should be implemented by the user since it didn't make the standard.
Hi, The breaking change is due to an incompatibility with the C++ standard. I think it is better to behave like the standard and add something on top of it. Kevlin Henney proposed a different design for C++ threads http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1883.pdf "Preliminary Threading Library Proposal for TR2" that was based on the idea that the creation of a thread return always a RAII movable joiner. { joiner j = thread(...); } The standard use of futures and async is quite close { future<T> ft = async(...); } but here the thread is no more managed by the user. Long time ago, I implemented something like that on top of Boost.Thread on TBoost.Async that is a mix of a RAII joiner and a future. The class had a parameter to control the destruction behavior enum type { do_terminate, do_join, do_detach }; ( See <https://svn.boost.org/svn/boost/sandbox/async/libs/async/doc/html/toward_boost_async/reference/ae_act_models_reference.html#toward_boost_async.reference.ae_act_models_reference.threader_hpp.template_class__shared_joiner___>). Unfortunately this has not been updated even tested since a long time also and the documentation need some work also :( IMO, TBoost.Async provides an interesting framework for asynchronous calls. Let me know if there is an interest to resurecting this project. I will comeback to as soon as possible to check it works yet and adapt it to the new standard interface. Best, Vicente