
On Dec 6, 2005, at 1:47 PM, Bulat Ziganshin wrote:
either 1) use MVars/TMVars instead of Channels. in any case your logging thread must consume data not slower than other channels produce then. in fact, using Chan have meaning only to smooth temporary speed differences between different threads. are you really need this??
This makes total sense for the logger thread. I will implement this.
2) i hope that you already replaced passing a Chan to subroutines with passing an actions that read/write this Chan. in this case you can go further and add to this actions incrementing/decrementing MVar counter. but even without tests it's evident that 1000 producer threads will get 1000 times more attention than 1 consumer thread if you don't have any restrictions on producing and consuming data.
The problem is that I have hundreds of other network client threads that do not directly read from a socket. They communicate through TChans instead. I believe they block someplace and I'm trying to troubleshoot this. Of course moving the logger to use TMVars instead of TChan might immediately solve my problems. Thanks, Joel -- http://wagerlabs.com/