Manlio Perillo wrote:
Simon Marlow ha scritto:
Manlio Perillo wrote:
[...]
We'd certainly support any efforts to add support for a more modern I/O multiplexing or asynchronous I/O back-end to the IO library. It's not too difficult, because the interface between the low-level I/O supplier and the rest of the IO library is rather small - just a few functions that read and write blocks of data in a blocking or non-blocking way. The blocking variants currently communicate with the I/O manager thread which does select() on behalf of the clients.


There is some documentation that summarize the current status, and how all fits together?

Sadly no, but the code is mostly restricted to a couple of modules (GHC.Handle and GHC.Conc).

There are some benchmarks that tell you the use of a separate I/O manager thread is a good solution?

Compared to what? I did measure the difference between doing this in Haskell code in the IO library (as with -threaded) against doing it in the RTS (without -threaded), and the Haskell version won hands down, mainly because it only re-initiates the select() when it has to change the file handles in the set. Using epoll() instead of select() should be even better.

Cheers,
        Simon

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to