XNSim/XNCore/XNThreadManager.h

142 lines
4.2 KiB
C
Raw Normal View History

2025-04-28 12:25:20 +08:00
/**
* @file XNThreadManager.h
* @author jinchao
* @brief 线
* @version 1.0
* @date 2024-11-06
*
* @copyright Copyright (c) 2024 XN
*
*/
#pragma once
#include "XNBaseFrameObject.h"
2025-05-20 15:39:40 +08:00
struct XNThreadManagerPrivate;
2025-04-28 12:25:20 +08:00
/**
* @brief 线
* @details 线线
*/
class XNThreadManager : public XNBaseFrameObject
{
2025-05-20 15:39:40 +08:00
XN_METATYPE(XNThreadManager, XNBaseFrameObject)
XN_DECLARE_PRIVATE(XNThreadManager)
2025-04-28 12:25:20 +08:00
public:
/**
* @brief 线
*/
2025-05-20 15:39:40 +08:00
XNThreadManager();
2025-04-28 12:25:20 +08:00
/**
* @brief 线
*/
virtual ~XNThreadManager();
protected:
/**
* @brief 线
* @param dd:XNThreadManagerPrivate类型
* @param parent:QObject类型
* @details
*/
2025-05-20 15:39:40 +08:00
XNThreadManager(PrivateType *p);
2025-04-28 12:25:20 +08:00
2025-05-20 15:39:40 +08:00
public:
2025-04-28 12:25:20 +08:00
/**
* @brief
* @details 线
*/
2025-05-20 15:39:40 +08:00
void Start();
2025-04-28 12:25:20 +08:00
/**
* @brief
* @details 线
*/
2025-05-20 15:39:40 +08:00
void Abort();
2025-04-28 12:25:20 +08:00
/**
* @brief
* @details 线
*/
2025-05-20 15:39:40 +08:00
void Pause();
2025-04-28 12:25:20 +08:00
/**
* @brief
* @details 线
*/
2025-05-20 15:39:40 +08:00
void Continue();
2025-04-28 12:25:20 +08:00
/**
* @brief 线
* @return true:
* @return false:
* @details 线
*/
2025-05-20 15:39:40 +08:00
virtual bool Initialize() override;
2025-04-28 12:25:20 +08:00
/**
* @brief 仿
* @note 线线
*/
2025-05-20 15:39:40 +08:00
virtual bool PrepareForExecute() override;
2025-04-28 12:25:20 +08:00
/**
* @brief 仿
* @param objectId: ID
* @param cmd: 仿
*/
2025-05-20 15:39:40 +08:00
void SimControl(uint32_t objectId, SimControlCmd cmd);
2025-04-28 12:25:20 +08:00
/**
* @brief
* @return RunStatus: 线
* @details 线
*/
RunStatus GetStatus();
/**
* @brief 线
* @return quint32: 线
*/
2025-05-20 15:39:40 +08:00
uint32_t GetThreadCount();
2025-04-28 12:25:20 +08:00
/**
* @brief 线
* @param name: XNString类型线
2025-05-20 15:39:40 +08:00
* @param freq: double类型线Hz
2025-04-28 12:25:20 +08:00
* @param priority: UINT32类型线990
* @param CPUAff: UINT32类型线CPU亲和性掩码CPU核是否使用0使1使
* 0x00000003使0,1CPU
* @details 线
*/
2025-05-20 15:39:40 +08:00
virtual uint32_t AddThreadPool(std::string name, double freq, uint32_t priority,
uint32_t CPUAff);
2025-04-28 12:25:20 +08:00
/**
* @brief 线
* @param id: UINT32类型ID
* @param fun: XNCallBack函数包装器类型
2025-05-20 15:39:40 +08:00
* @param threadID: UINT32类型线ID
2025-04-28 12:25:20 +08:00
* @param freqGroup: UINT32类型0121/431/841/1651/32
* @param RunPos: UINT32类型<2^(freqGroup)
* @param RunPriorty: UINT32类型990
* @return true:
* @return false:
* @details 线
*/
2025-05-20 15:39:40 +08:00
void RegisterFunction(uint32_t id, XNCallBack fun, uint32_t threadID, uint32_t freqGroup,
uint32_t RunPos, uint32_t RunPriorty);
2025-04-28 12:25:20 +08:00
private:
/**
* @brief
* @param freqGroup: UINT32类型0121/431/841/1651/32
* @param RunPos: UINT32类型<2^(freqGroup)
* @return true:
* @return false:
*/
2025-05-20 15:39:40 +08:00
bool IsFunParamRight(uint32_t ModelID, uint32_t freqGroup, uint32_t RunPos);
2025-04-28 12:25:20 +08:00
2025-05-20 15:39:40 +08:00
uint32_t AllocateThreadID();
2025-04-28 12:25:20 +08:00
};