From: Howard Hinnant (hinnant_at_[hidden])
Date: 2007-03-27 13:53:45
On Mar 27, 2007, at 1:44 PM, Peter Dimov wrote:
>> New use case:
>> vector<thread> v;
>> ... fill with threads ...
>> for (auto i = v.begin(), e = v.end(); i != e; ++i)
>> if (i_feel_like_it)
>> // need new thread now, go look for a detached one and use it
>> auto i = v.begin();
>> for (auto e = v.end(); i != e; ++i)
>> if (i->is_detached()) // N2184 spells this i->get_id() ==
>> if (i != v.end())
>> *i = std::thread(f); // recycle detached thread
> I was thinking of something along these lines, but it still seems
> to me. There is no reason to reuse an std::thread _object_ because
> you gain
> no efficiency from that (as opposed to reusing a thread).
What if the above use case uses vector<MyClass> where MyClass contains
a lot of expensive resources (or other data that needs to be kept
around for one reason or another) *plus* a std::thread?
if (i != v.end())
I.e. the fact that the thread is recycled instead of erased and
reconstructed here is due to reasons which have nothing to do with
with std::thread itself.