[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Nicolas Cannasse <warplayer@f...> |
| Subject: | Re: [Caml-list] Re: Efficient I/O with threads |
[snip] > Fixing this is perhaps too deep of a change to drive into the > OCaml system at this point. Is this a problem that is > addressed by the I/O channels provided by any other library > such as extlib? I can maybe answer on that one. Extlib IO channels provide "high-level" channels. A channel is just a record of lambdas that are used to read and write to it. There are implementations for reading and writing from caml low level channels, but also to input and output directly from a string. You can also create your own channels by providing the appropriate API functions ( 3 functions for input channels : read / input / close and 4 functions for output channels : write / output / flush / close ). This approach means that you can easily wrap one channel with another. For example there is a Base64 module that takes a channel as parameter and returns a channel that will either perform encoding or decoding in B64 and read/write to the underlying channel. The same approach could be used to add a buffer for either reading or writing. ExtLib IO channels are focused more on usability than performances. Using them require a very small overhead compared to using direct caml channels but is more flexible (you can later retarget your output to a string, or wrap it with a compression or encoding library) and if you're performing IO on disk it should not be so much different in terms of performances. Here's the module documentation : http://ocaml-lib.sourceforge.net/doc/IO.html Nicolas