>> All system calls issued from the network package use non-blocking. >> You don't have to worry about blocking at all. > > Almost. Especially when interfacing with C code you should include the > "-threaded" option to GHC to link against the multi-threaded run-time > system. Otherwise your Haskell code will block your C code and > vice-versa. Also some concurrency features don't work properly in the > single-threaded run-time.
Non-threaded RTS would block FFI to C code. But it does not block file descriptors and sockets because the scheduler uses select(). To my experience, *simple* network programming with non-threaded RTS also works well except the case where we reach the limit of file descriptors for the process. Anyway, I recommend to specify the "-threaded" option to GHC for network programming if you don't have special reasons. --Kazu _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe