使用 Windows API 比较线程 ID

标签 c windows multithreading winapi

我正在使用 Windows API 线程,我想比较线程 ID。

首先,我用 CreateThread() 创建了一个线程并存储我从函数中获取的句柄 ( HANDLE ) 和 ID ( LPDWORD )。

然后我使用 GetCurrentThread() 从创建的线程中获取句柄和 ID和 GetThreadId() .

对于两个句柄和两个 ID,我总是得到不同的值。

有没有办法以类似于 pthread 的方式比较线程?

我这样做是为了作为确认正确执行的调试选项。我总是从其他库(pthread.h、threads.h)但不是从 Windows api 得到正确的结果。这不是一个关键问题,但我想学习 winapi 中的程序

最佳答案

除了使用 GetCurrentThread() 和 GetThreadId(),您还可以使用 GetCurrentThreadId() [ http://msdn.microsoft.com/en-us/library/windows/desktop/ms683183%28v=vs.85%29.aspx] . 如前所述,不要在另一个线程上使用伪 HANDLE(由 GetCurrentThread() 返回)。

据我所知,一个线程可以有多个不同的 HANDLE,但 ID 应该是唯一标识符。

关于使用 Windows API 比较线程 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23374085/

相关文章:

c - 体育场问题 : Provide algorithm to solve the problem

c - 递归获取obj文件进行链接

c++ - 将 unicode 代码点转换为 utf-16

c++ - 成员函数声明的奇怪错误

iphone - 从非主线程的线程更改 GUI?

对 C 中的 putchar 结果感到困惑

c中串口传输时字符\r转化为\n

android - 从不同线程同时访问 SQLite 数据库

java - 使用单独的 Java 进程在映射驱动器上写入和读取文件

c# - 更新在另一个线程中创建的控件?