我正在为Windows编写一段C++代码,需要查询进程及其各个线程的时序。安全/定义为假定Windows伪句柄的值?
为了做必要的系统调用,我需要进程及其每个线程的句柄。我正在使用返回伪句柄的getCurrentProcess
和getCurrentThread
函数。进一步检查后,我注意到所有线程的伪句柄共享相同的值。
在互联网上简单搜索后,我发现下面的文章,报告了相同的值的进程和线程的伪处理,因为我得到了:https://weseetips.wordpress.com/2008/03/26/getcurrentthread-returns-pseudo-handle-not-the-real-handle/
我的问题:是它的安全和/或定义从一个线程调用getCurrentThread
一次,并在所有其他线程中使用返回的伪句柄让它们引用它们自己?
使用当前的实现,它按预期工作。我只是想知道这种行为是否有保证。换句话说,它可以在任何提供了getCurrentThread
功能的Windows平台上工作;并会改变行为被认为是一个突破性的变化?
的documentation for the getCurrentThread
function国家(重点煤矿):
伪句柄是一个特殊的常量,它是解释为 当前线程手柄。当需要线程句柄时,调用线程可以使用该句柄至 指定自己。 [...]
这让我相信这个特殊的伪句柄只是“当前线程”的别名,因此可以在所有线程中共享,让他们引用自己。另一方面,文档还说,返回值可以被调用线程使用,因此我的困惑!
伪句柄就像'.'目录条目。如果您执行'cd AnotherDirectory',那么仍然存在'.'目录项,但现在它指向新的当前目录。 – MSalters