本文讲解在c语言中如何将程序限制在单一cpu核心上运行,以优化某些特定应用场景的执行效率。
1、首先,利用SetProcessAffinityMask函数将当前进程绑定至指定CPU核心。该函数的dwMask参数用于指定进程可运行的处理器核心集合,从而确保进程仅在目标核心上执行。

2、若需进一步控制线程级调度,可调用SetThreadAffinityMask函数,传入当前线程句柄及对应的CPU掩码值。该掩码dwMask以位图形式表示允许运行的CPU编号:例如数值1(二进制0001)表示仅启用第0号核心(即第一个CPU核心)。

3、掩码值0010对应仅启用第1号CPU核心(即第二个核心),而0011则表示同时启用第0号与第1号核心;不同二进制组合代表不同的CPU启用策略,依此类推。
Miller (mlr) 是一个命令行工具,用于查询、整形和重新格式化名称索引数据,如 CSV、TSV、JSON 和 JSON Lines。它将 awk、sed、cut、join 和 sort 的功能整合到一个专为结构化数据处理而构建的单一工具中。

4、在设置亲和性之前,推荐先查询系统可用CPU核心数量。可通过调用GetSystemInfo函数填充SYSTEM_INFO结构体,并从中读取dwNumberOfProcessors字段,该字段准确反映当前系统所拥有的逻辑处理器核心总数,为后续亲和性配置提供依据。

5、系统当前激活的处理器集合由SystemInfo.dwActiveProcessorMask字段标识,该掩码每一位对应一个处理器:第0位对应处理器0,第31位对应处理器31。通过解析该掩码,可获知哪些处理器已被系统启用,适用于多核或多处理器架构下的资源识别、任务调度及性能调优等场景。











