|
Boost : |
Subject: Re: [boost] [thread] Do we need thread_group now?
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2012-04-14 05:28:25
Le 14/04/12 01:12, Howard Hinnant a écrit :
> On Apr 10, 2012, at 1:32 PM, Vicente J. Botet Escriba wrote:
>
>> join_all(threads);
> Is it worth the electrons to turn this into an algorithm?
>
> std::for_each(threads.begin(), threads.end(),
> [](thread& t) {t.join();});
>
> or even simpler (really I think std::for_each is probably obsolete):
>
> for (auto& t : threads)
> t.join();
>
>
Hi Howard,
you are right for join_all and for c++11 compilers. But in order to make
the code portable, join_all could help.
In addition, Boost.Thread provides timed join functions and I suspect
that joining N threads for a given duration is less evident and subject
to error on the user side.
template <typename TC, typename C, typename D>
bool try_join_all_until(TC & cont, chrono::time_point<C,D> const& tp)
{
for (auto& t : cont) {
if (! t.try_join_until(d, tp)) return false;
}
return true;
}
Or a better way to do it.
template <typename TC, typename R, typename P>
bool try_join_all_for(TC & cont, chrono::duration<R,P> const& d)
{
chrono::steady_clock::time_point tp = chrono::steady_clock::now()+d;
return try_join_all_until(cont, tp);
}
I don't know it adding these simple algorithms would be useful to the
Boost community if thread_group is deprecated. I could live without
them, my main concern is to deprecate thread_group.
What do you and others think? Anthony?
Best,
Vicente
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk