c11mutex.cpp 605 B

12345678910111213141516171819202122232425262728293031
  1. #include <iostream>
  2. #include <chrono>
  3. #include <thread>
  4. #include <mutex>
  5. // protected by g_num_mutex
  6. int g_num = 0;
  7. std::mutex g_num_mutex;
  8. void slow_increment(int id)
  9. {
  10. for (int i = 0; i < 3; ++i) {
  11. g_num_mutex.lock();
  12. ++g_num;
  13. std::cout << id << " => " << g_num << std::endl;
  14. g_num_mutex.unlock();
  15. //sleep for 1 second
  16. std::this_thread::sleep_for(std::chrono::seconds(1));
  17. }
  18. }
  19. int main()
  20. {
  21. std::thread t1(slow_increment, 0);
  22. std::thread t2(slow_increment, 1);
  23. t1.join();
  24. t2.join();
  25. return 0;
  26. }