XNSim/XNCore_Win/XNThreadObject/XNThreadObject_p.h

103 lines
2.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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