atom feed1 message in org.haskell.glasgow-haskell-userswaiting on multiple MVars
FromSent OnAttachments
Duncan CouttsDec 14, 2002 7:02 am 
Subject:waiting on multiple MVars
From:Duncan Coutts (dun@coutts.uklinux.net)
Date:Dec 14, 2002 7:02:27 am
List:org.haskell.glasgow-haskell-users

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