NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
sysinfo.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_SYSTEM_SYSINFO_HPP__
2#define NEFORCE_CORE_SYSTEM_SYSINFO_HPP__
3
11
14NEFORCE_BEGIN_NAMESPACE__
15
21
35class NEFORCE_API sysinfo {
36public:
53
60 struct NEFORCE_API memory_info {
67
72 NEFORCE_NODISCARD float64_t physical_memory_usage() const noexcept {
73 if (total_physical == 0) {
74 return 0.0;
75 }
76 return 100.0 * (1.0 - static_cast<float64_t>(available_physical) / total_physical);
77 }
78
83 NEFORCE_NODISCARD size_t available_memory() const noexcept;
84 };
85
92 struct CPU_info {
93 string vendor{};
94 string brand{};
99 string features{};
100
105 NEFORCE_NODISCARD bool hyperthreading() const noexcept { return logical_processors > cores; }
106 };
107
112 struct NEFORCE_API os_version_info {
117 string csd_version{};
118 string product_name{};
119
124 NEFORCE_NODISCARD string version() const;
125 };
126
131 enum class architecture {
132 UNKNOWN,
133 X86,
134 X64,
135 ARM,
136 ARM64,
137 IA64
138 };
139
140private:
141 system_info system_info_{};
142 memory_info memory_info_{};
143 CPU_info cpu_info_{};
144 os_version_info os_version_info_{};
145 architecture architecture_ = architecture::UNKNOWN;
146 atomic<bool> initialized_{false};
147
151 sysinfo() noexcept;
152
156 ~sysinfo() = default;
157
163 void init();
164
165public:
170 static sysinfo& instance() noexcept {
171 static sysinfo instance;
172 return instance;
173 }
174
175 sysinfo(const sysinfo&) = delete;
176 sysinfo& operator=(const sysinfo&) = delete;
177 sysinfo(sysinfo&&) = delete;
178 sysinfo& operator=(sysinfo&&) = delete;
179
185 void refresh();
186
191 NEFORCE_NODISCARD const system_info& get_system_info() const noexcept { return system_info_; }
192
197 NEFORCE_NODISCARD const memory_info& get_memory_info() const noexcept { return memory_info_; }
198
203 NEFORCE_NODISCARD const CPU_info& get_CPU_info() const noexcept { return cpu_info_; }
204
209 NEFORCE_NODISCARD const os_version_info& get_os_version_info() const noexcept { return os_version_info_; }
210
215 NEFORCE_NODISCARD architecture get_architecture() const noexcept { return architecture_; }
216
221 NEFORCE_NODISCARD bool is_initialized() const noexcept { return initialized_.load(memory_order_acquire); }
222
227 NEFORCE_NODISCARD static float64_t cpu_usage();
228
233 NEFORCE_NODISCARD static uint32_t process_count();
234};
235 // SystemInfo
237
238NEFORCE_END_NAMESPACE__
239#endif // NEFORCE_CORE_SYSTEM_SYSINFO_HPP__
原子类型完整实现
系统信息单例类
static sysinfo & instance() noexcept
获取单例实例
NEFORCE_NODISCARD architecture get_architecture() const noexcept
获取系统架构
static NEFORCE_NODISCARD uint32_t process_count()
获取当前运行的进程数量
NEFORCE_NODISCARD const memory_info & get_memory_info() const noexcept
获取内存信息
NEFORCE_NODISCARD const CPU_info & get_CPU_info() const noexcept
获取CPU信息
architecture
系统架构枚举
void refresh()
刷新系统信息
NEFORCE_NODISCARD bool is_initialized() const noexcept
检查是否已初始化
NEFORCE_NODISCARD const system_info & get_system_info() const noexcept
获取系统底层信息
static NEFORCE_NODISCARD float64_t cpu_usage()
获取当前CPU使用率
NEFORCE_NODISCARD const os_version_info & get_os_version_info() const noexcept
获取操作系统版本信息
unsigned int uint32_t
32位无符号整数类型
double float64_t
64位双精度浮点数类型
unsigned short uint16_t
16位无符号整数类型
unsigned long long uint64_t
64位无符号整数类型
NEFORCE_INLINE17 constexpr auto memory_order_acquire
获取内存顺序常量
uint64_t uintptr_t
可容纳指针的无符号整数类型
字符串类型别名和实用函数
string features
支持的指令集特性
uint32_t cores
物理核心数
NEFORCE_NODISCARD bool hyperthreading() const noexcept
检查是否支持超线程
uint32_t current_MHZ
当前频率
uint32_t max_MHz
最大频率
string brand
型号名称
string vendor
厂商名称
uint32_t logical_processors
逻辑处理器数
uint64_t total_physical
物理内存总量
uint64_t available_virtual
可用虚拟内存
uint64_t available_physical
可用物理内存
NEFORCE_NODISCARD size_t available_memory() const noexcept
获取总可用内存
uint64_t available_page_file
可用页面文件
uint64_t total_page_file
页面文件总量
NEFORCE_NODISCARD float64_t physical_memory_usage() const noexcept
计算物理内存使用率
uint64_t total_virtual
虚拟内存总量
操作系统版本信息
uint32_t platform_id
平台ID
string product_name
产品名称
NEFORCE_NODISCARD string version() const
获取版本字符串
uint32_t major
主版本号
string csd_version
补丁版本
uint32_t minor
次版本号
系统底层信息
uint32_t allocation_granularity
内存分配粒度
uintptr_t max_app_address
应用程序最大地址
uintptr_t min_app_address
应用程序最小地址
uint16_t processor_level
处理器级别
uint32_t page_size
内存页大小
uint16_t processor_revision
处理器修订版本
uint32_t processor_numbers
处理器数量
uintptr_t active_processor_mask
活动处理器掩码