c++ - 您如何将 CreateThread 用于作为类成员的函数?

标签 c++ multithreading winapi class

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

最佳答案

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

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

关于c++ - 您如何将 CreateThread 用于作为类成员的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1372967/

相关文章:

委托(delegate)构造函数中的 C++ 大括号括起来的初始值设定项列表

c++ - 如何在C++中设置数据为0?

c++ - Boost Thread Specific 指针 get() 方法所花费的大概时间

c++ - GetProcAddress 与 __declspec(dllimport)

c++ - 添加 operator<< 到 std::vector

c# - 线程导致应用程序在 iOS 上滞后,但在 Android 上不会

multithreading - 不需要时强制使用 Mutex

delphi - 为什么组合框在字体更改时将其文本更改为项目文本?

c++ - 编译时无法打开包含文件 X11/X.h

c++ - Boost.Asio 错误的本地端点