/** * * @file FITKThreadPool.h * @brief 线程池接口声明 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 * */ #ifndef __FITKTHREADPOOL_H___ #define __FITKTHREADPOOL_H___ #include "FITKCoreAPI.h" #include "FITKCoreMacros.h" #include "FITKAbstractObject.hpp" #include namespace AppFrame { class FITKSignalTransfer; } namespace Core { class FITKThreadPoolPrivate; class FITKThreadPoolDeletor; class FITKThreadTask; /** * @brief 线程池声明 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ class FITKCoreAPI FITKThreadPool : public FITKAbstractObject { friend FITKThreadPoolDeletor; friend FITKThreadTask; DeclSingleton(FITKThreadPool); public: /** * @brief 执行任务 * @param[i] task 线程池执行任务 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ void execTask(FITKThreadTask* task); /** * @brief 获取线程池中的任务数量 * @return int * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ int getTaskCount() const; /** * @brief 等待全部任务完成 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ void wait(); /** * @brief 等待任务完成 * @param[i] task 等待的任务 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-08-31 */ void wait(FITKThreadTask* task); /** * @brief 初始化,设置信号转接 * @param[i] task 信号转接 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ void init(AppFrame::FITKSignalTransfer* sigTransfer); private: /** * @brief 初始化 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ void initialize(); /** * @brief 结束,析构函数调用 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-07-17 */ void finalize(); /** * @brief 获取代理器 * @return FITKThreadPoolPrivate* * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ FITKThreadPoolPrivate* getAgent(); private: /** * @brief 代理器 封装线程池 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ FITKThreadPoolPrivate* _threadPoolAgent{}; }; /** * @brief 清理器,软件执行结束自动执行清理 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-03-02 */ class FITKThreadPoolDeletor { public: explicit FITKThreadPoolDeletor() = default; ~FITKThreadPoolDeletor(); }; } #endif