|
Boost : |
Subject: Re: [boost] Boost.Fiber review January 6-15
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2014-01-12 17:50:12
Le 12/01/14 19:39, Oliver Kowalke a écrit :
> 2014/1/11 Vicente J. Botet Escriba <vicente.botet_at_[hidden]>
>
>> Le 11/01/14 19:45, Oliver Kowalke a écrit :
>>
>> 2014/1/11 Vicente J. Botet Escriba <vicente.botet_at_[hidden]>
>>> What would be the advantages of using work-stealing at the fiber level
>>>> instead of using it at the task level?
>>>>
>>>> it is very simple because you migate a 'first-class' object, e.g. the
>>> fiber
>>> already is like a continuation.
>>>
>> yes, but what are the advantages? Does it performs better? It is easy to
>> write them?
>>
> because creating depended tasks would not block your thread-pool.
> suppose you have a thread-pool of M threads and you create (without
> fiber-support) many tasks N.
> some of the tasks create other task, executed in the pool, and wait on the
> results.
> if you have enough tasks N>>M all your worker-threads of the pool would be
> blocked.
>
> something like:
>
> void tsk() {
> ...
> for( int i = 0; i<X;++i) {
> ...
> packaged_task<> p(some_other_tsk);
> future<> f = p.get_future();
> spawn( p);
> f.get(); // blocks worker-thread
> ...
> }
> ...
> }
>
> With fibers the code above (using packaged_task<> and future<> from
> boost.fiber) does not
> block the worker-thread.
>
This is the kind of information, motivation and examples the user needs
on the documentation ;-)
Maybe you should add how it could be done without fibers so that the
thread doesn't blocks (you remember, we added it together on your
thread_pool library more than 3 years ago).
Vicente
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk