XNSim/XNCore_Win/XNThreadManager/XNThreadManager.h

167 lines
4.9 KiB
C
Raw Normal View History

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