XNSim/XNCore_Win/XNThreadObject/XNThreadObject_p.h

103 lines
2.0 KiB
C
Raw Permalink Normal View History

2025-07-19 12:44:06 +08:00
#pragma once
#include "XNObject/XNObject_p.h"
namespace XNSim {
/**
* @brief 线
*/
struct XNThreadObjectPrivate : public XNObjectPrivate {
/**
* @brief
*/
XNFrameworkPtr _framework;
/**
* @brief 线
*/
XN_UINT32 _uPriority = 0;
/**
* @brief 线CPU亲和性掩码
* @details
* CPU核是否使用0使1使0x00000003使0,1CPU
*/
XN_UINT32 _uAffinity = 0;
/**
* @brief 线
*/
XN_DOUBLE _setFreq = BASE_RUN_FREQ;
/**
* @brief 线
*/
std::vector<std::map<XN_UINT32, std::vector<XNCallBack>>> _funVec;
#ifdef XN_WINDOWS
/**
* @brief 线
*/
XN_THREAD _thread;
/**
* @brief 线
*/
XN_MUTEX _mutex;
/**
* @brief 线
*/
XN_THREAD_MUTEX _mtx = std::unique_lock<XN_MUTEX>(_mutex);
/**
* @brief 线
*/
XN_THREAD_CV _cond;
#endif
#ifdef XN_LINUX
/**
* @brief pthread线程调度参数
*/
XN_THREAD_SCHED_PARAM _param;
/**
* @brief pthread线程属性
*/
XN_THREAD_ATTR _attr;
/**
* @brief pthread线程
*/
XN_THREAD _thread;
/**
* @brief 线
*/
XN_THREAD_MUTEX _mtx = PTHREAD_MUTEX_INITIALIZER;
/**
* @brief 线
*/
XN_THREAD_CV _cond = PTHREAD_COND_INITIALIZER;
#endif
/**
* @brief 线
*/
PERIOD_INFO _pinfo;
/**
* @brief 线
*/
RunStatus _eRunStatus = RunStatus::NotStart;
/**
* @brief 线
*/
XN_UINT32 _RunPosition = 0;
/**
* @brief 线
*/
XN_INT32 _count = 0;
/**
* @brief 线
*/
XN_TIMESPEC _lastRunTime;
/**
* @brief 线
*/
XN_DDS::DataWriter *_writer;
/**
* @brief 线ID
*/
XN_UINT32 _threadID = 0;
};
} // namespace XNSim