-1

我正在.NET 中创建可在服务器端使用的应用程序。我的应用程序也有 C++ 部分。在其中一个 c++ 类中,我需要创建一个线程,该线程应该贯穿对象的生命周期。我正在使用 CreateThread 函数来创建新线程。

问题是,它需要一个静态函数作为参数来运行线程。因为我想在服务器端部署它,所以我不想使用静态函数用于线程。我想使用要用于此方法的对象的成员函数。

有没有更好的方法来创建线程

4

1 回答 1

2

您不能将成员函数指针传递给CreateThread,但可以传递转发给成员函数的非成员函数。

您可以传递一个参数,CreateThread该参数将传递给您的函数。使用它来传递你的类的实例:

struct foo
{
    void thread_func();

    static DWORD CALLBACK thread_func_thunk(void *arg)
    {
        ((foo*)arg)->thread_func();
    }
};

foo fooinst;
CreateThread(nullptr, 0, foo::thread_func_thunk, (void*)&fooinst, 0, nullptr)
于 2013-08-22T18:59:26.913 回答