gpt4 book ai didi

c++ - DuplicateHandle 的代价

转载 作者:行者123 更新时间:2023-11-30 04:40:08 26 4
gpt4 key购买 nike

我正在编写一个类库,它为作为 Windows 注册表的 C API 提供方便的面向对象的前端。然而,我很好奇,对于复制我的 key 类的情况,处理 HREG 的最佳做法是什么。

我也可以

  1. 分配一个堆整数并将其用作引用计数。在句柄上调用 RegCloseKey() 并在引用计数为零时释放整数。
  2. 使用句柄的内置功能,而不是维护引用计数,在复制注册表项对象时调用 HREG 上的 DuplicateHandle()。然后始终在析构函数中调用 RegCloseKey。

DuplicateHandle() 设计要简单得多,但我担心以这种方式设计的东西是否会严重影响应用程序的性能。因为我的应用程序通过数十万个键递归,所以复制此对象的速度是一个敏感问题。

DuplicateHandle() 函数的固有开销是什么?

最佳答案

我怀疑您会发现 DuplicateHandle 的开销很小。内核已经为每个打开的对象管理了一个引用计数,DuplicateHandle 为目标进程向内核句柄表添加了一个新条目,并增加了对象引用计数。 (DuplicateHandle 通常也会进行安全检查,但如果源进程和目标进程相同,它可能会跳过该检查。)

如果您同时打开数十万个对象,您可能会遇到困难,这取决于 Windows 允许您打开多少个句柄。

关于c++ - DuplicateHandle 的代价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1744016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com