RequestProcessorManager.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. //
  2. // Created by xcbosa on 2023/1/28.
  3. //
  4. #include "RequestProcessorManager.h"
  5. namespace xc {
  6. namespace processor {
  7. auto taskQueue = deque<RequestProcessTask *>();
  8. auto taskQueueMutex = mutex();
  9. void enqueueTask(RequestProcessTask *task) {
  10. taskQueueMutex.lock();
  11. taskQueue.push_back(task);
  12. taskQueueMutex.unlock();
  13. }
  14. void deleteTask(RequestProcessTask *task) {
  15. taskQueueMutex.lock();
  16. std::remove_if(taskQueue.begin(), taskQueue.end(), [task](RequestProcessTask *t) { return task == t; });
  17. taskQueueMutex.unlock();
  18. }
  19. RequestProcessTask *dequeueTaskSync() {
  20. while (true) {
  21. taskQueueMutex.lock();
  22. if (!taskQueue.empty()) {
  23. RequestProcessTask *task = taskQueue.front();
  24. taskQueue.pop_front();
  25. taskQueueMutex.unlock();
  26. return task;
  27. }
  28. taskQueueMutex.unlock();
  29. usleep(1000 * 10);
  30. }
  31. }
  32. }
  33. }