#include<thread> #include<mutex> #include<iostream> using namepspace std; void print(const std::string &s) { cout << s << endl; } int main() { std::mutex m1; std::mutex m2; std::thread t1([&] { print("From T1"); m1.lock(); //locking m1 first print("From T1"); m2.lock(); //locking m2 second }); std::thread t2([&] { print("From T2"); m2.lock(); //lcoking m2 first print("From T2"); m1.lock(); //locking m1 second }); t1.join(); t2.join(); }