pthread_create - 无效使用非静态成员函数

时间:2016-07-06 12:53:49

标签: c++ pthreads

我一直在努力学习如何使用线程,而且我一直在努力创建线程。我在这样的类构造函数中创建了线程...

Beacon::Beacon() {
    pthread_create(&send_thread,NULL, send, NULL);
}

发送功能尚未执行任何操作,但这是它的样子。

void Beacon::send(void *arg){
    //Do stuff
}

每次运行代码时,我都会无效使用非静态成员函数错误。我尝试过使用& send,但是没有用。我也设置了最后一个NULL参数,但是没有用。我一直在寻找其他示例代码来尝试和模仿它,但似乎没有任何效果。我做错了什么?

1 个答案:

答案 0 :(得分:5)

如果你不能使用std::thread我建议你创建一个static成员函数来包装你的实际函数,并将this作为参数传递给函数。

这样的东西
class Beacon
{
    ...

    static void* send_wrapper(void* object)
    {
        reinterpret_cast<Beacon*>(object)->send();
        return 0;
    }
};

然后创建类似

的线程
pthread_create(&send_thread, NULL, &Beacon::send_wrapper, this);