我正在.NET 中创建可在服务器端使用的应用程序。我的应用程序也有 C++ 部分。在其中一个 c++ 类中,我需要创建一个线程,该线程应该贯穿对象的生命周期。我正在使用 CreateThread 函数来创建新线程。
问题是,它需要一个静态函数作为参数来运行线程。因为我想在服务器端部署它,所以我不想使用静态函数用于线程。我想使用要用于此方法的对象的成员函数。
有没有更好的方法来创建线程
我正在.NET 中创建可在服务器端使用的应用程序。我的应用程序也有 C++ 部分。在其中一个 c++ 类中,我需要创建一个线程,该线程应该贯穿对象的生命周期。我正在使用 CreateThread 函数来创建新线程。
问题是,它需要一个静态函数作为参数来运行线程。因为我想在服务器端部署它,所以我不想使用静态函数用于线程。我想使用要用于此方法的对象的成员函数。
有没有更好的方法来创建线程
您不能将成员函数指针传递给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)