In trying to use Active Objects for a GUI (NCurses), I tried implementing a thread-safe queue using pthreads, but getting it right wasn't as easy as it looked. Going down the boost::threads path wasn't very fruitful, either, as stl seems to have too many multi-threading-hostile features to mesh well.
TBB looks like it's worth a try, but I don't know if valgrind/drd will work well with it - I may have to look for another race-checker.
If anyone has had any experiences (positive/negative) with TBB, please share them with us. Thank you.