There's also libev, which seems to be aimed as a simplified and cleaned-up version of libevent. But its support for Windows seems pretty minimal.<div><br></div><div>y<br><br><div class="gmail_quote">On Mon, Oct 31, 2011 at 1:45 PM, Nathan Linger <span dir="ltr"><<a href="mailto:nlinger@janestreet.com">nlinger@janestreet.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5"><br>
On 10/31/11 16:37, Anil Madhavapeddy wrote:<br>
> On 31 Oct 2011, at 15:06, Yaron Minsky wrote:<br>
><br>
> > On 31/10/11 14:29, Anil Madhavapeddy wrote:<br>
> >> You could combine most of these by basing Async on top of libuv,<br>
> >> which is a superset of libev (the event library that Lwt uses to<br>
> >> abstract network I/O).<br>
> >><br>
> >> <a href="https://github.com/joyent/libuv" target="_blank">https://github.com/joyent/libuv</a><br>
> >><br>
> >> Crucially, libuv has good support for the Windows AIO model, and is<br>
> >> also what node.js uses to drive its event loop (so has widespread<br>
> >> usage).<br>
> >><br>
> >> At first glance at Core, it looks like many of the Linux-specific<br>
> >> bits like high-res timers and thread scheduling are also covered by<br>
> >> it.<br>
> ><br>
> > How much do you know about the performance and quality of libuv? I'm<br>
> > always nervous about shimming yet another layer between us and the<br>
> > bare metal.<br>
><br>
> Nothing beyond flicking through the source code and occasionally being<br>
> cursed with using node.js (which works pretty well until you get to<br>
> the Javascript level :)<br>
><br>
> It's pretty much the only game in town when it comes to cross-platform<br>
> C-based asynchronous programming libraries however (as far as I know).<br>
<br>
</div></div>Isn't libevent[1] the same sort of thing? I believe it is the C-based<br>
asynchronous programming library underlying memcached[2], which in turn<br>
is used by several high-profile web applications -- their website lists<br>
Wikipedia, WordPress.com, Flickr, Twitter, Typepad, Youtube, LiveJournal,<br>
Digg, Craigslist, and a handful of others I didn't recognize.<br>
<br>
I dusted off the ocaml bindings for libevent[3] at home last year and<br>
found them pretty usable for the small experiments I did (implementing a<br>
monadic interface for CML-style concurrent programming). Their website[1]<br>
claims "Libevent should compile on Linux, *BSD, Mac OS X, Solaris,<br>
Windows, and more."<br>
<br>
[1] <a href="http://libevent.org/" target="_blank">http://libevent.org/</a><br>
[2] <a href="http://www.memcached.org/" target="_blank">http://www.memcached.org/</a><br>
[3] <a href="http://mmzeeman.home.xs4all.nl/ocaml/" target="_blank">http://mmzeeman.home.xs4all.nl/ocaml/</a><br>
<br>
</blockquote></div><br></div>