
Thanks, I'll keep that in mind.
I wrote a better example of what I'm trying to do:
https://gist.github.com/1420742 It runs worse with multiple threads than it
does with one (both time-wise and memory-wise), I think due to the bug
Simon described in that commit.
But that bug aside, is it possible to write a multithreaded application in
Haskell that sends large amounts of data from one thread to the other
without getting crushed by GC? I've looked into the garbage collector a
bit, and this seems problematic.
Mike S Craig
On Thu, Dec 1, 2011 at 2:38 PM, Edward Z. Yang
OK. A common mistake when using channels is forgetting to make sure all of the informaiton is fully evaluated in the worker thread, which then causes the writer thread to spend all its time evaluating thunks.
Edward
Excerpts from Michael Craig's message of Thu Dec 01 13:17:57 -0500 2011:
Excellent! Glad this has been sorted out upstream.
Edward, to answer your question regarding blocking database calls: I'm using mongoDB to log events that come into a WAI webapp. The writes to mongo are blocking, so I'd like to run them in parallel with the webapp. The webapp would push the data into a Chan and the mongo writer would read from the Chan and make the writes sequentially (using the Chan as a FIFO between parallel threads). This would allow for request rates to temporarily rise above mongo's write rate (of course with an expanded memory footprint during those bursts).
Mike S Craig
On Thu, Dec 1, 2011 at 12:10 PM, Felipe Almeida Lessa < felipe.lessa@gmail.com> wrote:
On Thu, Dec 1, 2011 at 2:40 PM, Edward Z. Yang
wrote: Simon Marlow investigated, and we got this patch out:
Nice work, guys! Hope it gets included in the glourious GHC 7.4 =D.
Cheers,
-- Felipe.