如何使用CreateThread()
创建属于类成员的函数线程?
最佳答案
您需要创建一个静态方法用作实际的线程启动函数,并将指向该实例的指针作为lpParameter
参数传递给CreateThread
。这将传递给static方法,该方法可以将其强制转换为对象指针并调用成员函数。
class MyClass
{
static DWORD WINAPI StaticThreadStart(void* Param)
{
MyClass* This = (MyClass*) Param;
return This->ThreadStart();
}
DWORD ThreadStart(void)
{
// Do stuff
}
void startMyThread()
{
DWORD ThreadID;
CreateThread(NULL, 0, StaticThreadStart, (void*) this, 0, &ThreadID);
}
};