ThreadId在CreateThread()c ++中的重要性

时间:2012-04-24 09:31:38

标签: c++ winapi createthread

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

如果握住手柄,则不需要threadId来操纵线程;但是,您可以选择保留ID,然后使用OpenThread获取的句柄。 (这也适用于进程之间,唯一的方法是通过OpenThread ID将“句柄”传递给线程到另一个进程。

您还可以使用该ID将作业分配到您的主题(尽管您可以自行构建自己的标识符)。

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

答案 1 :(得分:1)

  

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

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

  

这种方式有可能吗?

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