Coroutines get you most of the way there, but from what I've heard through 
node-fibers V8 uses quite a bit of stack so the light-weight threads are 
still much larger than you'd see in erlang or lua

On Monday, 12 August 2013 08:38:31 UTC+10, Kevin Swiber wrote:
>
> I'm contemplating an experiment to bring an Erlang-like "process" model to 
> Node.js.
>
> I'm curious if anyone has been down this path before or if there's prior 
> art I haven't stumbled upon yet.
>
> Background: I've been working with Node for a couple of years now.  The 
> default answer to multi-threading Node is "don't do it."  This experiment 
> challenges that advice.  There are many benefits to multi-threading, though 
> they admittedly bring features not promised by Node core.  I'm fine with 
> that.
>
> Inspiration: Erlang implements an Actor model for concurrency.  A process 
> running in Erlang's VM runs on a thread underneath the covers.  The VM 
> implements a work-stealing task scheduler to manage the load effectively. 
>  From here on out, I'll refer to the "Erlang process" style pattern as an 
> Actor.  (Note: I'm no expert in Erlang.  Some of this might be wrong. :)
>
> The Node event loop is powerful, but unfortunately, not all operations are 
> asynchronous in nature.  For problems whose solution does not fit the 
> single event loop pattern, I'd like to see an alternative emerge.
>
> Current thinking on design:
> * Actors should have access to all Node's capabilities.
> * Actors should run in isolated event loops.
> * Actors should communicate via message passing.
> * No shared state.
> * Actors should take advantage of a V8 Isolate.
> * A work-stealing task scheduler should be implemented under the covers.
> * Actors can spawn other actors.
>
> The scheduler seems like one of the hardest pieces to implement (IMHO). 
>  For that, it might be worth investigating Intel's Threading Building 
> Blocks[1] or the Cilk project[2].
>
> Ideally, this could all be accomplished via modules without rewriting any 
> part of Node core.
>
> So... what am I missing?  Is there a giant hurdle that makes this nearly 
> impossible?  Distributed systems made of actors using arbitrary 
> computational complexity and having the ability to take advantage of the 
> Node ecosystem seems very compelling to me.
>
> [1] http://threadingbuildingblocks.org/
> [2] http://supertech.csail.mit.edu/cilk/
>
> Cheers,
>
> -- 
> Kevin Swiber
> Projects: https://github.com/kevinswiber
> Twitter: @kevinswiber
>  

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to