[Haskell-cafe] simple servers

Kazu Yamamoto ( 山本和彦 ) kazu at iij.ad.jp
Thu Sep 20 05:24:10 CEST 2012

>> 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.


More information about the Haskell-Cafe mailing list