
Hello Simon, Thursday, July 21, 2005, 1:16:10 AM, you wrote:
However, if one of my Haskell-based callbacks creates new threads with forkIO, I could be in trouble; if they make any calls into C, a new bound OS thread would be created for them, and this could wind up causing trouble in C. I would probably need some sort of "global MVar" to synchronize access into the C world.
SM> Bingo. This is why you need to make all your calls to the C library SM> from a single thread. you can either: 1) made all calls from single thread 2) put all calls in "withMVar lock", where `lock` is a global MVar JG> 1. It seems that there is no function that says "block the current JG> thread until the thread given by ThreadId dies" GHC concurrency stuff is very basic and low-level. there is several libs which adds some more high-level abilities, including MissingH (see Child.hs) and some functions in http://www-i2.informatik.rwth-aachen.de/~stolz/Haskell/CA.hs -- Best regards, Bulat mailto:bulatz@HotPOP.com