Fri, Mar 02, 2012 at 07:34:41PM -0500, Joey Adams wrote
> On Fri, Mar 2, 2012 at 3:04 PM, Alexander V Vershilov
> <alexander.vershi...@gmail.com> wrote:
> > Hello, Paul.
> >
> > It seems you should not use 3 threads, but run in a data-driven behaviour 
> > with
> > one thread per client.
> 
> I don't think this will work for Paul's situation.  He needs to be
> able to send notifications to clients.  This means sending to the
> client even when the client has nothing to say at the moment.
> 
> I've been grappling with the same problem.  See:
> 
>     http://www.haskell.org/pipermail/haskell-cafe/2012-January/098495.html
> 
> The discussion was recently summed up in Parallel Haskell Digest 8
> (scroll down to "How to make asynchronous I/O composable and safe?"):
> 
>     http://www.well-typed.com/blog/64
> 
> To try to address this problem, I wrote a module called stm-channelize:
> 
>     http://hackage.haskell.org/package/stm-channelize
> 
> However, I did not end up using it.  I would point you to the source
> of my channelize function, but I think it's more complicated than it
> needs to be.
> 
> I, for one, would recommend a three-thread approach.  That is, for
> each client, you basically have:
> 
>  * A thread for receiving
> 
>  * A thread for sending
> 
>  * A main thread that waits for the other two threads, and kills them
> when one of them finishes or dies.
> 
> I'll try to put together a simple chat server example, like the one I
> wrote for stm-channelize.
> 
> -Joey

Yes, there is no way to use only one thread for such a case, but conduit
aproach seems quite easy and take care about resources. 
Recently I wrote a question about such a situation [1] and it simplification

[1] http://www.haskell.org/pipermail/haskell-cafe/2012-February/099770.html

I've used smth like stm-channelize approach to make "virtual socket" when
there was many clients on one connection. I can check stm-channelize more
precietly and write if my aproach has usefull idea for that case.

--
Alexander Vershilov.

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to