我对C ++中的CreateThread()函数有疑问。
此函数中threadId参数的重要性是什么?
我们是否能够使用相同的threadId创建相同的线程(同名)。像
DWORD threadId = 0;
CreateThread(NULL, 0, Thread1, NULL,0, &threadId);
CreateThread(NULL, 0, Thread1, NULL,0, &threadId);
这种方式有可能吗? threadId中包含的值是什么?通过上面的编码,第二个线程创建是否会覆盖第一个线程的threadId值?
答案 0 :(得分:3)
如果握住手柄,则不需要threadId
来操纵线程;但是,您可以选择保留ID,然后使用OpenThread
获取的句柄。 (这也适用于进程之间,唯一的方法是通过OpenThread
ID将“句柄”传递给线程到另一个进程。
您还可以使用该ID将作业分配到您的主题(尽管您可以自行构建自己的标识符)。
最后但并非最不重要的是,有些时候你确实需要线程ID,例如在调用PostThreadMessage
函数时。
答案 1 :(得分:1)
此函数中threadId参数的重要性是什么?
如果你产生多个线程,你如何区分各种线程?此id是允许您检查和处理来自各个线程的信息的句柄。
这种方式有可能吗?
这是可能的,但在此特定示例中,您将丢失首先创建的线程的一个访问点。