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 值,我该怎么做呢?
最佳答案
CreateThread 允许您传入类型为 void *
的单个参数并使用参数调用线程过程。
如果你想传递类型为 T 的参数,其中 sizeof(T) <= sizeof(void *)
, 你可以简单地将你的论点转换为 void *
在调用 CreateThread
并在您的线程过程中将其转换回您的类型。
但是如果sizeof(T) > sizeof(void *)
您将需要创建一个结构来容纳您的论点。然后,您将传递一个指向 CreateThread
的指针调用(作为 void *
)。
将指针传递给结构时,您需要确保它具有适当的生命周期。最简单的方法是在调用 CreateThread
之前在堆上分配结构。然后释放线程过程中的内存。
关于c - 我如何在 ansi c windows lib 中的线程中传递参数也可以使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2918639/