【发布时间】:2014-04-29 19:55:58
【问题描述】:
我正在使用 Windows api 线程,我想比较线程 ID。
首先,我使用CreateThread() 创建一个线程并存储我从函数中获得的句柄(HANDLE)和ID(LPDWORD)。
然后我使用 GetCurrentThread() 和 GetThreadId() 从创建的线程中获取句柄和 ID。
我总是得到两个句柄和两个 ID 的不同值。
有没有办法以与 pthread 类似的方式比较线程?
我这样做是为了作为确认正确执行的调试选项。我总是从其他库(pthread.h、threads.h)中得到正确的结果,但从 windows api 中却没有。这不是一个关键问题,但我想学习winapi中的过程
【问题讨论】:
-
只是好奇,GetCurrentThreadId() 是否返回您期望的值?
-
@HerrJoebob 是的,它得到了正确的值。如果我在线程中使用 GetCurrentThread() 中的 GetThreadId(),我也会得到正确的值。但是在 main 中这样做会给出错误的值。
-
如果这两个变体有效,我不确定到底出了什么问题。在任何情况下,“使用 GetCurrentThread() 从创建的线程中获取句柄 [...]”听起来是错误的,因为当前线程是正在执行调用的线程,因此您只能获取该线程的值,而不是一个不同的。你能澄清一下,也许可以添加一些代码并详细说明你的期望吗?就目前而言,您的问题无法回答。
-
只比较线程ID,不比较处理值。
标签: c windows multithreading winapi