You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
682 B

1 year ago
  1. #pragma once
  2. #include <fstream>
  3. #include <functional>
  4. #include <iostream>
  5. #include <list>
  6. #include <map>
  7. #include <memory>
  8. #include <mutex>
  9. #include <queue>
  10. #include <set>
  11. #include <sstream>
  12. #include <string>
  13. #include <thread>
  14. #include <vector>
  15. namespace iflytop {
  16. using namespace std;
  17. class ZWorkQueue {
  18. private:
  19. bool m_isJoining = false;
  20. unique_ptr<thread> m_workQue;
  21. queue<function<void()>> m_workQueue;
  22. mutex m_QueueMutex;
  23. mutex m_mutex;
  24. bool workFlag = false;
  25. public:
  26. ZWorkQueue();
  27. ~ZWorkQueue();
  28. void startSchedule();
  29. void stopSchedule();
  30. bool isWorking() { return workFlag; }
  31. bool push(function<void()> work);
  32. };
  33. } // namespace iflytop