我在.NET中创建可以在服务器端使用的应用程序。我的应用程序也有C ++部分。在其中一个c ++类中,我需要创建一个应该在对象的生命周期内运行的线程。 我正在使用CreateThread函数来创建新线程。
问题是,它需要一个静态函数作为运行线程的参数。由于我想在服务器端部署它,我不想使用静态函数来用于线程。我想使用该方法的对象的成员函数。
有没有更好的方法来创建线程
答案 0 :(得分: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)