time_data.cpp 759 B

123456789101112131415161718192021222324252627282930313233343536
  1. //
  2. // Created by zx on 22-12-1.
  3. //
  4. #include "time_data.h"
  5. template <class T>
  6. TimedLockData<T>::TimedLockData()
  7. {
  8. timeout_=0.1;
  9. }
  10. template <class T>
  11. void TimedLockData<T>::reset(const T& tdata,double timeout)
  12. {
  13. std::unique_lock lock(mutex_);
  14. data_=tdata;
  15. timeout_=timeout;
  16. tp_=std::chrono::steady_clock::now();
  17. }
  18. template <class T>
  19. bool TimedLockData<T>::timeout()
  20. {
  21. auto now=std::chrono::steady_clock::now();
  22. auto duration = std::chrono::duration_cast<std::chrono::microseconds>(now - tp_);
  23. double time = double(duration.count()) * std::chrono::microseconds::period::num / std::chrono::microseconds::period::den;
  24. return time>timeout_;
  25. }
  26. template <class T>
  27. T& TimedLockData<T>::Data()
  28. {
  29. std::unique_lock lock(mutex_);
  30. return data_;
  31. }