您如何将 CreateThread 用于属于类成员的函数?
如何使用 CreateThread()
创建属于类成员的函数的线程?
How do you use CreateThread()
to create threads of functions which are class members?
推荐答案
你需要创建一个静态方法作为实际的线程启动函数,并传递一个指向实例的指针作为lpParameter
CreateThread
的参数.这将传递给静态方法,该方法可以将其转换为对象指针并调用成员函数.
You need to create a static method to use as the actual thread start function, and pass a pointer to the instance as the lpParameter
argument to CreateThread
. That will get passed to the static method, which can cast it to an object pointer and call through to the member function.
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);
}
};
相关文章