您如何将 CreateThread 用于属于类成员的函数?

时间:2023-01-21
本文介绍了您如何将 CreateThread 用于属于类成员的函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用 CreateThread() 创建属于类成员的函数的线程?

How do you use CreateThread() to create threads of functions which are class members?

推荐答案

你需要创建一个静态方法作为实际的线程启动函数,并传递一个指向实例的指针作为lpParameterCreateThread 的参数.这将传递给静态方法,该方法可以将其转换为对象指针并调用成员函数.

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);
    }
};

这篇关于您如何将 CreateThread 用于属于类成员的函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

上一篇:c++ 继承类中函数重载的问题 下一篇:C++ 类成员的默认值是什么

相关文章

最新文章