[Haskell-cafe] Concurrency best practices?

wren ng thornton wren at freegeek.org
Sat Feb 5 10:46:11 CET 2011

So I'm working on a project that uses STM to run a lot of things in 
parallel without the headaches of locks. So far it's working 
beautifully, STM rocks. But there's one snag...

Sometimes I need those threads to do some IO like printing logging info. 
I'd like to make these IO chunks atomic with respect to one another so 
that the logging output isn't garbage. Since I'm using STM everywhere 
else, I'd love to use it for this too (instead of mixing STM and non-STM 
concurrency) except you can't embed IO in STM.

I could just use STM vars as locks to force the atomicity, but locks are 
ugly and bug-prone. So what's the current best practice for doing this 
kind of thing?

Live well,

More information about the Haskell-Cafe mailing list