我正在为Windows编写一段C ++代码,需要查询进程及其各个线程的时间。
要进行必要的系统调用,我需要进程的句柄及其每个线程。我正在使用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州(强调我的):
伪句柄是一个特殊常量,被解释为 当前线程句柄。 调用线程可以使用此句柄 每当需要一个线程句柄时指定它自己。 [...]
这让我相信这个特殊的伪句柄只是“当前线程”的别名,因此可以在所有线程之间共享,让它们引用自己。另一方面,文档还说调用线程可以使用返回值,因此我的困惑!