int NM_Generator = 1;
//Aray to store thread handles
HANDLE Array_Of_Thread_Handles[1];
//variable to hold handle of North pulse
HANDLE Handle_Of_NM_Generator = 0;
//Create NM_Generator Thread
Handle_Of_NM_Generator = CreateThread( NULL, 0, NMGenerator, &dDifference, 0, NULL);
if ( Handle_Of_NM_Generator == NULL) ExitProcess(NM_Generator);
我想在其中传递一个参数double值,我该怎么办?
答案 0 :(得分:2)
CreateThread允许您传入类型void *
的单个参数,并使用参数调用线程过程。
如果你想传递一个类型为T sizeof(T) <= sizeof(void *)
的参数,你可以简单地在void *
的调用中将你的参数转换为CreateThread
并将其转换回你的类型你的线程程序。
但是如果sizeof(T) > sizeof(void *)
你需要创建一个能够保存你的论点的结构。然后,您将指向CreateThread
调用的指针(作为void *
)。
将指针传递给结构时,您需要确保它具有适当的生命周期。最简单的方法是在调用CreateThread
之前在堆上分配结构,然后释放线程过程中的内存。
答案 1 :(得分:1)
您已经使用“&amp; dDifference”传递参数。
检查example如何创建线程。
答案 2 :(得分:0)
好的,我找到了
//Create NM_Generator Thread
Handle_Of_NM_Generator = CreateThread( NULL, 0, NMGenerator, &dDifference, 0, NULL);
if ( Handle_Of_NM_Generator == NULL) ExitProcess(NM_Generator);
//dDifference is the thread parameter