
On Tue, Jan 03, 2006 at 12:07:43AM +0000, Joel Reymont wrote:
On Jan 2, 2006, at 9:20 PM, Chris Kuklewicz wrote:
This makes me ponder one of the things that Joel was trying to do: efficiently pass data to a logging thread. It may be that a custom channel would be helpful for that as well.
I have not taken the time to analyze the Chameneos code but need to point out that my problem was not with efficiently passing data to the logging thread. The issue was with data accumulating in the channel and the logger thread not reading it out fast enough.
The TChan implementation is a single-linked list implemented on top of TVar's. That would seem pretty efficient to me.
It's simple and efficient but does nothing to prevent the channel from growing out of control. A slightly modified (custom) channel based on TChan, but enforcing a maximum size (blocking on insert if the channel is too full), probably would have solved the problem. I assume that Erlang either does that or increases the priority of threads with large event queues, or both. Thanks, Matt Harden