
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
participants (1)
-
Duncan Coutts