1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #pragma once
- #include <iostream>
- #include <thread>
- #include <mutex>
- #include <condition_variable>
- #include <vector>
- #include <functional>
- #include <atomic>
- #include <stdexcept>
- #include <cstddef>
- #include "Aclapi.h"
- #include "dt.h"
- class __declspec(dllexport) CyclicTaskExecutor
- {
- private:
- static CyclicTaskExecutor* m_pTaskExecutor;
- static std::mutex m_Mutex;
- std::atomic<bool> running_{ true };
- std::thread worker_;
- std::vector<std::function<void()>> tasks_; // 任务列表
- mutable std::mutex mutex_;
- std::condition_variable taskAdded_;
- size_t currentTaskIndex_{ 0 };
- public:
- static CyclicTaskExecutor* GetInstance();
- CyclicTaskExecutor();
- ~CyclicTaskExecutor();
- void AddTask(std::function<void()> task);
- // 获取当前任务数量
- size_t TaskCount();
- // 清空所有任务
- void ClearTasks();
- };
|