www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Portable Async Programming in D2

reply "eris0xff" <jvburnes gmail.com> writes:
I've been away from D for a while.  While I do have Andrei's 
book, most of my experience has been with D1 and generally very 
positive.

Anyway, I've been doing a fair amount of async, callback-oriented 
network programming using libuv in C in my curent project.  I'd 
like to implement my next version of the project in D version 2.

I don't want to use libuv if there are portable, reliable and 
built-in D mechanisms to:

1. Manage multi-threaded, message passing, event-oriented 
callback loops.
2. Portable task/thread pools with priority.
3. Transparent select/epoll implementation on POSIX and IO 
Completion on Windows.

I'm know that threading and task pools are available and I think 
(perhaps) the message send functionality has a priority send.

The transparent event-oriented async I/O is where I get a little 
fuzzy in the std/core libraries.  I have very little information 
on how async I/O is implemented (if at all) in D standard 
libraries, especially whether it uses IO completion on Windows.

Please excuse if this isn't completely clear, I'm still working 
on 1st cup of coffee.

thx

eris0xff
Oct 25 2013
parent "eris0xff" <jvburnes gmail.com> writes:
On Friday, 25 October 2013 at 16:53:34 UTC, eris0xff wrote:
 I've been away from D for a while.  While I do have Andrei's 
 book, most of my experience has been with D1 and generally very 
 positive.

 Anyway, I've been doing a fair amount of async, 
 callback-oriented network programming using libuv in C in my 
 curent project.  I'd like to implement my next version of the 
 project in D version 2.

 I don't want to use libuv if there are portable, reliable and 
 built-in D mechanisms to:

 1. Manage multi-threaded, message passing, event-oriented 
 callback loops.
 2. Portable task/thread pools with priority.
 3. Transparent select/epoll implementation on POSIX and IO 
 Completion on Windows.

 I'm know that threading and task pools are available and I 
 think (perhaps) the message send functionality has a priority 
 send.

 The transparent event-oriented async I/O is where I get a 
 little fuzzy in the std/core libraries.  I have very little 
 information on how async I/O is implemented (if at all) in D 
 standard libraries, especially whether it uses IO completion on 
 Windows.

 Please excuse if this isn't completely clear, I'm still working 
 on 1st cup of coffee.

 thx

 eris0xff
I did see that someone was putting together a Google GSOC to implement something like this by either wrapping libev/uv or creating a new boost-like asio implementation inside the std libraries. eris0xff
Oct 25 2013