Subject: Re: [boost] GSoC: Boost.Pipeline -- scheduling of segments
From: Benedek Thaler (thalerbenedek_at_[hidden])
Date: 2014-07-02 04:50:29
Thanks for all the responses so far!
*Niall*: I'm afraid using HPX is out of scope in context of a Boost
library. If all else fail, I'll fall back to a simple implementation (e.g:
1). IMO, depending on this design decision will be this library a great
tool or just something nice.
*Adam*: I'm not sure how this smart queue would solve the problem of
reentrancy. Currently, if a thread returns from a transformation, it can
never be resumed. This makes yielding hard/not possible.
If we make reentrancy mandatory, then we face the next challenge, which you
described above IIUC. The think the key points are here: (1) A task can
yield, and can point to an other task which is waited upon. (2) A task (but
not the thread) can "block" on the upstream queue, if it's empty. If it's
not clear, I'll describe these in greater length.
*Oliver*: I considered using coroutines, however I don't clearly see how
this would solve this problem exactly. IIUC, Coroutines provide a way for a
single thread to execute multiple methods. I'd need multiples threads
executing multiple methods in a similar fashion. I'll continue thinking
I couldn't found it in the docs. Does Coroutine have any drawbacks?