You're right, I erroneously assumed that executors have to join on
destruction much like a future returned from async. Re-reading the
proposal I see that join behavior is specified for a concrete
executor, not the general executor concept.
Either of these options would work for me, as I could emulate a "don't
block" request with a call to future<>::wait_for(0). I'd prefer the
latter to the former though, if only because it fits my needs better
and it would make it more explicit that future's behavior is modified.
> For the time being (and very temporarily) , if you don't want anymore this
> blocking future, you can move it to a list of detached futures.
>>
>> Please advise if there's a workaround for this behavior that doesn't
>> involve me distributing a custom version of Boost.Thread with my
>> binaries? :)
>>
>>
>
> You can send any PR you consider improves the behavior of the library.
Of course; I just prefer to discuss it first to find out if others
consider such a change to be an improvement. :)
Konrad
That’s a fairly vague question. I use thread, data_time, chrono, filesystem, and system on an older embedded ARM processor. These libraries are great for my application.
I recommend that you not just grab anything you see in Boost indiscriminately, but rather (as with anything else) look a little deeper and make sure the specific library is suitable. I think it’s fair to say that all Boost libraries have efficiency as a consideration, but are most uncompromising about correctness. A few years back I used Boost.Python and found that it generated surprisingly large code in order to be correct in cases that didn’t matter to me. The code size almost became problematic. Some libraries (I don’t have an example at hand) do things that pretty clearly imply a fair amount of malloc() and free(). Just because it’s Boost doesn’t mean it’s going to be suitable for your embedded application.
Steven J. Clark
VGo Communications