#include boost::recursive_mutex m; struct callable { void operator()() { boost::recursive_mutex::scoped_lock l(m); }; }; int main(int argc, char **argv) { callable x; boost::thread thr(x); thr.join(); return 0; }