Do you mean the Observer pattern, or are you just talking about
boost::visit_each?  I'm not aware of anything about visit_each that makes
it inherently unusable in a multi-threaded program.  Boost.Variant uses
visitors.  You could look at the BGL too, which also uses visitors.

I mean Visitor Pattern, by means of boost::visit_each.

Thank you for you input!