On Tue, Mar 5, 2019 at 5:38 PM Manuel Pöter <man...@manuel-poeter.at> wrote:
>
> After reading the code more thoroughly I've realized that you have some 
> operations that the Chase-Lev work-stealing deque does not support, like 
> PushBack or PopBackHalf (although Hendler and Shavit proposed a variation of 
> the Arora work-stealing deque that supports stealing ~half the entries).
> FWIW: for those you are interested - my Xenium library contains an 
> implementation of the Chase-Lev work-stealing deque: 
> https://github.com/mpoeter/xenium/blob/master/xenium/chase_work_stealing_deque.hpp

Hi Manuel,

Yes, stealing half, pushing from the other side, storing functions by
value, moving functions were the reasons.
std::function may allocate itself, but if you allocate std::function
as well, that's 2 allocations, right? Or you need to rework whole
Eigen and TensorFlow to allocate your special pointer-sized thing. And
good std::function impls don't allocate in common case. So that makes
it completely dynamic-allocation free. And the free will frequently be
remote, and there is no magic in memory allocator, it will need to
queue it back or something. These are things that authors of most
lock-free papers prefer to not mention ;)
Also in my design owner and remote threads operate on different data
(owner don't touch back, remote don't touch front), I know that
front/back are collocated (don't remember why) but they can be made
spread completely and work independently.

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"Scalable Synchronization Algorithms" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to lock-free+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/lock-free/CAEeQi3uRYrq2cYDh_aLM7GuCho0KBFJWfPnqZ6JtN%2B2%2B5sarBA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to