qps.h 568 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include <atomic>
  3. #include <thread>
  4. #include <chrono>
  5. class qps {
  6. public:
  7. void increase() {
  8. counter_.fetch_add(1, std::memory_order_release);
  9. }
  10. qps() : counter_(0) {
  11. thd_ = std::thread([this] {
  12. while (!stop_) {
  13. std::cout << "qps: " << counter_.load(std::memory_order_acquire) << '\n';
  14. std::this_thread::sleep_for(std::chrono::seconds(1));
  15. //counter_.store(0, std::memory_order_release);
  16. }
  17. });
  18. }
  19. ~qps() {
  20. stop_ = true;
  21. thd_.join();
  22. }
  23. private:
  24. bool stop_ = false;
  25. std::thread thd_;
  26. std::atomic<uint32_t> counter_;
  27. };