Is D right for me?

Sean Kelly sean at invisibleduck.org
Tue Oct 12 15:54:31 PDT 2010


Denis Koroskin Wrote:

> On Tue, 12 Oct 2010 02:32:55 +0400, Andrei Alexandrescu  
> <SeeWebsiteForEmail at erdani.org> wrote:
> 
> For me, I/O should be scalable (and thus support async operations) so I  
> came up with my own implementation.
> I've tried building it on top of std.concurrency, but it doesn't scale  
> either. So, once again, I had to implement my own message passing  
> mechanism. I can implement existing std.concurrency interface on top of my  
> own one without sacrificing anything, but not vice-versa).
... 
> Unlike std.concurrency, it is easy (and encouraged) to have as many  
> mailboxes as you need. Mailboxes can forward events to other mailboxes,  
> e.g. so that you can poll() only one mailbox (and not every single one of  
> them).

Pretty cool.  I'm not sure I would consider poll() scalable though.  Or at least not to the levels where my concept of "scalable" applies.  That aside, I think the correct approach is to have an IO API that stands by itself and then provide a few adaptors for integrating it with messaging in different ways.  That will allow performance-minded folks to do their to-the-metal programming and convenience-minded folks to unify IO with the rest of their message-passing.  This is one thing that I feel Erlang got wrong.  The IO-messaging integration is too magic, and ends up being problematic (try handing control of a socket from one process to another, for example, without losing any in-flight messages in the process).  In short, I think I agree with you than std.concurrency isn't exactly right for this.  At least as the default interface at any rate.


More information about the Digitalmars-d mailing list