Boost logo

Boost :

Subject: Re: [boost] Executor associated to the future continuations (was [thread] boost::future::then)
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2015-10-15 19:19:49

Le 13/10/15 19:33, Vicente J. Botet Escriba a écrit :
> Le 13/10/15 10:34, Vladimir Prus a écrit :
>> On 11-Oct-15 9:30 PM, Vicente J. Botet Escriba wrote:
>>> Le 10/10/15 16:58, Vicente J. Botet Escriba a écrit :
>>>> Le 10/10/15 15:26, Vicente J. Botet Escriba a écrit :
>>>>> Le 10/10/15 07:57, Vladimir Prus a écrit :
>>>>>> So, the function must be executed in different thread from all
>>>>>> the continuations,
>>>>>> and it would seem I'd need to something set executor on promise
>>>>>> for that to work?
>>>>> I will see how adding an Executor parameter to promise,
>>>>> packaged_task constructors and
>>>>> make_ready_future/make_exceptional_future could be implemented if
>>>>> this will solve your use case.
>>>> I've create to track
>>>> this feature request
>>> This commit contains a fix for this issue as well as the addition of
>>> the VERY-EXPERIMENTAL promise::set_executor and
>>> packaged_task::set_executor. These should be replaced by
>>> constructors having an executor as parameter.
>> Vicente,
>> thanks for the addition. I'll take a look at implementing Qt-friendly
>> future on top of this, and report
>> how it goes.
>> Thanks,
>> Volodya
> You are welcome.
> Note that I've not implemented the constructors as it need to change
> the hierarchy of classes, but promise::set_executor and
> packaged_task::set_executor which is more expensive as I need to
> type-erase the executor.
> Any feedback would be much appreciated.

After looking at the Concurrency TS, I'm not sure if it is not a good
idea to store the executor so that


launch cont on the executor associated to f.

In the Concurrent TS, ::then() can execute the continuation on any thread.


  * When the object's shared state is ready, the continuation
    |/INVOKE/(/DECAY_COPY/(std::forward<F>(func)), std::move(*this))| is
    called on an unspecified thread of execution with the call to
    |/DECAY_COPY/()| being evaluated in the thread that called |then|.


What do you think?


Boost list run by bdawes at, gregod at, cpdaniel at, john at