> Koen writes:
> 
> >   accept :: Socket -> IO (Handle, HostName, PortNumber)
> > 
> > Unfortunately, this is a blocking function, which means that
> > the whole program blocks when it is waiting for a
> > connection.
> [..]
> > Ideally, I would like to integrate this with the function
> > "hSelect" from the Select module.
> 
> man 2 accept on my Linux says:
> 
>        In  order  to  be  notified  of  incoming connections on a
>        socket, you can use  select(2)  or  poll(2).   A  readable
>        event will be delivered when a new connection is attempted
>        and you may then call accept to get a socket for that con-
>        nection.
> 
> So I imagine if you passed the socket as the first arg to 
> Select.hSelect, you'd get what you want.  
> SocketPrim.socketToHandle claims to do the required conversion.
> 
> disclaimer: I haven't tried this.

Strange, I haven't received the original message in this thread yet (I
read it from the archives).

'accept' doesn't block the whole program, it only blocks the current
thread - it's designed to be well-behaved in a multi-threaded program.
If you need the select() behaviour, I recommend using multiple threads
and let GHC's RTS handle the I/O multiplexing.

You mentioned that you weren't using concurrency for a good reason -
care to elaborate?

Cheers,
        Simon

_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to