Lets talk about fibers
Jonathan M Davis via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jun 4 15:28:51 PDT 2015
On Wednesday, 3 June 2015 at 18:34:34 UTC, Liran Zvibel wrote:
> As we see, there is nothing to gain and lots to lose by moving
> fibers between threads.
Given that it sounds like LLVM _can't_ implement moving fibers
(or if it can, it'll really hurt performance), I think that we
need a really compelling reason to allow it. And I haven't heard
one from anyone thus far.
Initially, at dconf, Walter asserted that we needed to make
fibers moveable across threads, but I haven't really heard anyone
give a reason why we need to. deadalnix talked about load
balancing that way, but you gave good reasons as to why that
didn't make sense, and that argument is the closest that I've
seen to a reason why it would make sense to move fibers across
threads.
Now, like Steven, I've never used a fiber in my life (I really
should look into them one of these days), so I'm ill-suited for
making a decision on this, but it sounds to me like we should
start by having it be illegal to move fibers across threads and
then add the ability later if someone comes up with a good enough
reason. Certainly, it's sounds questionable that it even _can_ be
implemented and costly if it can.
Another approach would be to make it so that shared(Fiber) could
be moved across threads but that Fiber can't be (or at least,
it's undefined behavior if you do, since the compiler will assume
that you won't), and if the 3 major backends can all support
moving fibers across threads (even in an inefficient fashion),
then we can just implement that support for shared(Fiber) and say
that folks are free to shoot themselves in the foot using that if
they so desire and let Fiber be more restrictive and not have it
take the performance hit incurred by allowing fibers to be passed
across threads.
But if LLVM really can't support moving fibers across threads,
then I think that the clear answer is that we shouldn't allow it
at all (in which case, shared(Fiber) should probably be outright
disallowed).
- Jonathan M Davis
More information about the Digitalmars-d
mailing list