makesurethread.cpp 735 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <thread>
  2. #include <mutex>
  3. #include <condition_variable>
  4. #include <iostream>
  5. std::mutex mymutex;
  6. std::condition_variable mycv;
  7. bool success = false;
  8. void thread_func()
  9. {
  10. {
  11. std::unique_lock<std::mutex> lock(mymutex);
  12. success = true;
  13. mycv.notify_all();
  14. }
  15. //实际的线程执行的工作代码放在下面
  16. //这里为了模拟方便,简单地写个死循环
  17. while (true)
  18. {
  19. }
  20. }
  21. int main()
  22. {
  23. std::thread t(thread_func);
  24. //使用花括号减小锁的粒度
  25. {
  26. std::unique_lock<std::mutex> lock(mymutex);
  27. while (!success)
  28. {
  29. mycv.wait(lock);
  30. }
  31. }
  32. std::cout << "start thread successfully." << std::endl;
  33. t.join();
  34. return 0;
  35. }