#ifndef REQUESTTHREADPOOL_H #define REQUESTTHREADPOOL_H #include #include #include #include #include #include #include #include namespace TC { // 请求任务基类 class RequestTask : public QObject, public QRunnable { Q_OBJECT public: RequestTask() : QObject(), QRunnable() { setAutoDelete(false); } virtual ~RequestTask() {} virtual void run() = 0; virtual bool retry() = 0; int retryCount() const { return m_retryCount; } void incrementRetryCount() { m_retryCount++; } void setMaxRetries(int maxRetries) { m_maxRetries = maxRetries; } int maxRetries() const { return m_maxRetries; } bool canRetry() const { return m_retryCount < m_maxRetries; } signals: void taskCompleted(bool success); void taskFailed(); private: int m_retryCount = 0; int m_maxRetries = 3; // 默认最多重试3次 }; // 线程池管理类 class RequestThreadPool : public QObject { Q_OBJECT public: static RequestThreadPool* instance(); void addTask(std::shared_ptr task); void setMaxThreadCount(int count); int activeThreadCount() const; private: RequestThreadPool(QObject* parent = nullptr); ~RequestThreadPool(); void processNextTask(); // 在 private slots: 部分修改 private slots: void onTaskCompleted(bool success); void onTaskFailed(RequestTask* task); // 修改方法签名,接收任务指针作为参数 private: static RequestThreadPool* s_instance; QThreadPool m_threadPool; QQueue> m_taskQueue; QMutex m_mutex; QWaitCondition m_condition; int m_activeTaskCount = 0; }; } // namespace TC #endif // REQUESTTHREADPOOL_H