0

我对 C++ 中的 CreateThread() 函数有疑问。

这个函数中threadId参数的重要性是什么?

我们是否能够使用相同的 threadId 创建相同的线程(相同的名称)。像

     DWORD threadId = 0;
     CreateThread(NULL, 0, Thread1, NULL,0, &threadId);
     CreateThread(NULL, 0, Thread1, NULL,0, &threadId);

这种方式可行吗?threadId 中包含的值是什么?通过上述编码,第二个线程创建是否会覆盖第一个线程的 threadId 值?

4

2 回答 2

3

如果您握住手柄,则不需要threadId操纵线程;但是,您可以选择保留 ID,然后使用OpenThread. (这也适用于进程之间,这是您可以通过在那里设置 ID 将线程句柄“转移”到不同进程的唯一方法OpenThread)。

您还可以使用该 ID 将作业分配给您的线程(尽管您可以只制作自己的标识符)。

最后但并非最不重要的一点是,有些时候您确实需要线程 ID,例如在调用PostThreadMessage函数时。

于 2012-04-24T09:56:22.643 回答
1

这个函数中threadId参数的重要性是什么?

如果你产生多个线程,你如何区分不同的线程?此 id 是允许您检查和处理来自各个线程的信息的句柄。

这种方式可行吗?

这是可能的,但在这个特定示例中,您失去了对您首先创建的线程的一个访问点。

于 2012-04-24T09:37:09.073 回答