Hi all,

I've been experimenting with making an asynchronous IO library. At the
moment it uses Haskell threads but the idea is that it could be
transparently extended to use system AIO.

http://charlesstreet22.force9.co.uk/~duncan/projects/aio/AIO.hs

My question is if there is an effecient way to block / wait on multiple
MVars. takeMVar & readMVar can wait on one MVar. The puspose is to be
able get the reults of a list of AIO operations, in the order in which
they complete.

You could iterate through the list and tryTakeMVar, or spawn a thread to
block on each one and then write into a central MVar or Channel. The
latter is the approach that I am currently using.

the reason you can't simply set them up to all write to a single MVar in
the first place is that it is desirable to be able to have the same AIO
operation be synchronised by multiple readers / clients.

Is there a better way to do this? Or would it need a new MVar /
scheduler primitive?

Duncan
_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to