> I assume that you're binding the libc function directly here: I'm using Network.Socket. Sory if it's not clear from my previous posts.
> In that case, you need to have the RTS manage sleeping your thread for > you. You should make the socket non-blocking and handle the EAGAIN and > EWOULDBLOCK cases by calling threadWaitRead[1] to block the current > Haskell thread only, until the fd is readable. Note that > threadWaitRead is GHC only. > If you download the source to network-bytestring[2], you can see a > very similar pattern in the code for send and recv in there. Thanks, but I haven't managed to find a way of setting a socket into non blocking mode without using FFI directly (and I haven't found solution in network-bytestring too). How can I make this? The only way I've found is making handle by socketToHandle then reading by hGetBufNonBlocking. But this way seems not suited for non-connection based sockets. _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
