103 lines
2.0 KiB
C
103 lines
2.0 KiB
C
|
#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,1号CPU
|
|||
|
*/
|
|||
|
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
|