#include #include #include boost::mutex resourceX; boost::mutex resourceY; void deadlockThreadAFunc() { int counter = 0; while(true) { boost::mutex::scoped_lock lockX(resourceX); boost::thread::yield(); // to encourage deadlock boost::mutex::scoped_lock lockY(resourceY); std::cout << "threadA working: " << ++counter << "\n"; } } void deadlockThreadBFunc() { int counter = 0; while(true) { boost::mutex::scoped_lock lockY(resourceY); boost::thread::yield(); // to encourage deadlock boost::mutex::scoped_lock lockX(resourceX); std::cout << "threadB working: " << ++counter << "\n"; } } int main() { boost::thread thread1(&deadlockThreadAFunc); boost::thread thread2(&deadlockThreadBFunc); boost::thread::yield(); std::cout << "End" << std::endl; while (1) { if ( std::cin.get() ) break; } return 0; }