fork download
  1. #include <mutex>
  2. #include <thread>
  3. #include <iostream>
  4.  
  5. std::mutex m1, m2;
  6.  
  7. void loop2()
  8. {
  9. for(int i = 0; i < 10; ++i) {
  10. m2.lock();
  11. std::cout << "Thread 2: " << i << '\n';
  12. m1.unlock();
  13. }
  14. }
  15.  
  16. void loop1()
  17. {
  18. m2.lock();
  19. std::thread t2(loop2);
  20. for(int i = 0; i < 10; ++i) {
  21. m1.lock();
  22. std::cout << "Thread 1: " << i << '\n';
  23. m2.unlock();
  24. }
  25. t2.join();
  26. m2.unlock();
  27.  
  28. }
  29.  
  30. int main()
  31. {
  32. std::thread(loop1).join();
  33. }
  34.  
Success #stdin #stdout 0s 20872KB
stdin
Standard input is empty
stdout
Thread 1: 0
Thread 2: 0
Thread 1: 1
Thread 2: 1
Thread 1: 2
Thread 2: 2
Thread 1: 3
Thread 2: 3
Thread 1: 4
Thread 2: 4
Thread 1: 5
Thread 2: 5
Thread 1: 6
Thread 2: 6
Thread 1: 7
Thread 2: 7
Thread 1: 8
Thread 2: 8
Thread 1: 9
Thread 2: 9