[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Idea for an event loop library
- From: Rob Hoelz <rob@...>
- Date: Fri, 11 May 2012 11:10:20 -0400
On Fri, May 11, 2012 at 09:56:50AM -0500, Tim Caswell wrote:
> ...
>
> The one thing faux blocking never did for me is parallel work. I like my
> logic to be as parallel as possible to reduce latency for the http request
> (or whatever operation I'm working on). Using coroutines to make
> non-blocking calls appear as sequential blocking calls is great for when
> you want to do things in sequence. (though I would argue named callbacks
> using JS hoisting is just as easy) But for doing things in parallel, it's
> rather lacking. Maybe the best is a hybrid of using coroutines when they
> make sense and callbacks for other stuff.
The way I would allow this is via a waitall function:
local ev1 = ev:go(function()
-- do some work, like make an HTTP request or something
end)
local ev2 = ev:go(function()
-- do some other work, like order pizza, I don't know
end)
ev:waitall(ev1, ev2)
waitall would only yield control to the calling coroutine once ev1 and
ev2 are complete. I would probably have a waitany as well, which would
yield control once at least one of the events is complete.
>
> ...