
On 8 May 2008, at 04:09, Peisheng Wang wrote: You are importing the namespace boost, so mutex is both a variable name and a type name, the compiler gets confused. You have a similar problem with std::count. Changing the variable names to amutex and acount fixes the problem. The below code compiles and runs for me. #include <boost/thread.hpp> #include <boost/thread/mutex.hpp> #include <iostream> using namespace std; using namespace boost; int acount = 0; boost::mutex amutex; void increment_count() { boost::mutex::scoped_lock lock(amutex); std::cout << "count = " << ++acount << std::endl; } int main(int argc, char* argv[]) { boost::thread_group threads; for (int i = 0; i < 10; ++i) threads.create_thread(&increment_count); threads.join_all(); return 0; } I'm not quite sure your compiler line is correct either. I don't think you are supposed to be linking with libpthread. You should instead be linking with libboost_thread. My compiler line was: g++ test.cc -I/opt/local/include -L/opt/local/lib -lboost_thread-mt Thanks, Kevin Martin