HANDLECreateThread(
LPSECURITY_ATTRIBUTESlpThreadAttributes,
//线程安全属性
DWORDdwStackSize,
//堆栈大小
LPTHREAD_START_ROUTINElpStartAddress,
//线程函数
LPVOIDlpParameter,
//线程参数
DWORDdwCreationFlags,
//线程创建属性
LPDWORDlpThreadId
//线程ID
);
createthread 原型如上,其中第三个参数为线程函数,第四个参数即为线程函数的参数。要知道很多函数都是有多个参数的,而此处只提供了一个参数。
我们知道LPVOID是一个没有类型的指针,也就是说你可以将LPVOID类型的变量赋值给任意类型的指针,比如在参数传递时就可以把任意类型传递给一个LPVOID类型为参数的方法,然后在方法内再将这个“任意类型”从传递时的“LPVOID类型”转换回来。于是我们可以先把线程函数的所有参数放入结构体里边,然后createthread的时候把 结构体传入进去,最后在线程函数里边把LPVOID强制转换为结构体指针即可。
#include <iostream>
#include <stdlib.h>
#include&l