I've written three related variations on TQueue (from the stm
package). All three are designed to avoid the reader starvation
problem described in GHC Trac 9539  while limiting contention. Two
are based on Okasaki's scheduled (i.e., real-time) banker's queues,
while the third is based on his amortized-time banker's queue.
I am hoping one or more people with programs that use TQueue heavily
would be willing and able to try out these alternatives and see how
they perform in their applications. I'm interested in how they compare
to the current TQueue implementation, and also how they compare to
each other. The queues are currently in a GitHub repository , but
if it would be helpful I could put them up on Hackage.