Asynchronicity in D

Max Klyga max.klyga at gmail.com
Thu Mar 31 14:20:23 PDT 2011


On 2011-03-31 22:35:43 +0300, Jonas Drewsen said:

> On 31/03/11 18.26, Andrei Alexandrescu wrote:
>> snip
> 
> I believe that we would need both the threaded async IO that you 
> describe but also a select based one. The thread based is important 
> e.g. in order to keep buffering incoming data while processing elements 
> in the range (the OS will only buffer the number of bytes allowed by 
> sysadmin). The select based is important in order to handle _many_ 
> connections at the same time (think D as the killer app for 
> websockets). As Robert mentions fibers would be nice to take into 
> consideration as well.
> 
> What I also see as an unresolved issue is non-blocking handling in 
> http://erdani.com/d/phobos/std_stream2.html which fits in naturally 
> with this topic I think.
> 
> I may very well agree mentoring if we get a solid proposal out of this.

I'm very glad to hear this. Now my motivation doubled!
> 
> /Jonas

Any comments, if this proposal be more focused on asyncronous 
networking or should it address asyncronisity in Phobos in general?

I researched a little about libev and libevent. Both seem to have some 
limitations on Windows platform.

libev can only be used to deal with sockets on Windows and uses select, 
which limits libev to 64 file handles per thread.
libevent uses Windows overlaping I/O, but this thread[1] shows that 
current implementation has perfomance limitations.

So one option may be to use either libev or libevent, and implement 
things on top of them.
Another is to make a new implementation (from scratch, or reuse some 
code from Boost.ASIO[2]) using threads or fibers, or maybe both.

 1. http://www.mail-archive.com/libevent-users@monkey.org/msg01730.html
 2. http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio.html




More information about the Digitalmars-d mailing list