你如何使用CreateThread作为类成员的函数? [英] How do you use CreateThread for functions which are class members?

查看:1548
本文介绍了你如何使用CreateThread作为类成员的函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

推荐答案

您需要创建一个静态方法作为实际的线程启动函数,并传递一个指向实例的 lpParameter code> 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);
    }
};

这篇关于你如何使用CreateThread作为类成员的函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆