On 4/3/11 11:58 PM, Thomas DuBuisson wrote:
Wren,
Glad to see someone is doing a more complete packaging of STM helpers
and derivatives!
I've done a little work on bounded TChans[1] (hackage "bounded-tchan"
package) and I think you should consider a few things:
Ah, somehow I missed that in my searching. I'll give it a look and try
to integrate things.
1) Split the reader counter and writer counters as I've done in
bounded-tchan. This gives 2-5 times better performance (I benchmarked
using Criterion, a single reader, a single writer, and tested channels
with bounds of 10, 100, and 1000 elements).
That's crazy. I wonder why... must be a contention issue...
2) Implement a "tryWriteTBChan" for obvious reasons.
Good idea.
4) Help me figure out a good way to build dupTBChan [2]. It's not easy.
I've yet to figure out a way of doing this that has the right semantics.
Perhaps splitting the reader and writer counters will help, though it
sounds like you haven't had much luck either.
[2] http://stackoverflow.com/questions/5446484/how-to-add-a-finalizer-on-a-tvar
Have you taken a look at TwilightSTM?
http://proglang.informatik.uni-freiburg.de/projects/syncstm/
http://hackage.haskell.org/package/twilight-stm
Since I'm aiming to have stm-chans eventually incorporated into stm
proper, that wouldn't work for me, though it sounds like it might solve
the ideological question about adding finalizers to TVars
--
Live well,
~wren
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe