Skip to content

feat: 优化CPU检测、增强线程安全并导出CPU特性#23

Open
xunxun1982 wants to merge 1 commit into
adonais:masterfrom
xunxun1982:5852513_diff_cpu_perf_and_safety_opts
Open

feat: 优化CPU检测、增强线程安全并导出CPU特性#23
xunxun1982 wants to merge 1 commit into
adonais:masterfrom
xunxun1982:5852513_diff_cpu_perf_and_safety_opts

Conversation

@xunxun1982

Copy link
Copy Markdown

本次提交包含对核心库的多项重要优化,旨在提升性能、健壮性和模块化能力。

主要变更如下:

  1. CPU特性检测与缓存 (cpu_info.c/h):

    • 引入CPU特性缓存结构 cpu_features_cache_t,通过一次性检测并缓存结果,避免了对 CPUID 指令的重复调用。
    • 通过导出的 g_cpu_features 指针,允许其他依赖模块安全、高效地复用CPU检测结果。
  2. 线程安全与初始化顺序 (portable.c):

    • 调整了初始化逻辑,在 do_it() 函数的开头强制调用 cpu_info_initialize(),确保在设置任何API Hook(特别是 memset)之前,CPU相关的资源已准备就绪,从根本上解决了多线程环境下的竞态条件风险。
    • 保留了对 creator_hookremove_hook 的关键段保护,确保了Hook操作的原子性。
  3. 健壮性 (portable.c):

    • 保留了对 undo_it 清理函数的结构化异常处理(__try/__except)和重入保护,确保了在各种异常情况下,程序都能尽可能干净地释放所有资源。

本次提交包含对核心库的多项重要优化,旨在提升性能、健壮性和模块化能力。

主要变更如下:

1.  CPU特性检测与缓存 (cpu_info.c/h):
    -   引入CPU特性缓存结构 `cpu_features_cache_t`,通过一次性检测并缓存结果,避免了对 `CPUID` 指令的重复调用。
    -   通过导出的 `g_cpu_features` 指针,允许其他依赖模块安全、高效地复用CPU检测结果。

2.  线程安全与初始化顺序 (portable.c):
    -   调整了初始化逻辑,在 `do_it()` 函数的开头强制调用 `cpu_info_initialize()`,确保在设置任何API Hook(特别是 `memset`)之前,CPU相关的资源已准备就绪,从根本上解决了多线程环境下的竞态条件风险。
    -   保留了对 `creator_hook` 和 `remove_hook` 的关键段保护,确保了Hook操作的原子性。

3.  健壮性 (`portable.c`):
    -   保留了对 `undo_it` 清理函数的结构化异常处理(`__try`/`__except`)和重入保护,确保了在各种异常情况下,程序都能尽可能干净地释放所有资源。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant