我一直在努力学习如何使用线程,而且我一直在努力创建线程。我在这样的类构造函数中创建了线程...
Beacon::Beacon() {
pthread_create(&send_thread,NULL, send, NULL);
}
发送功能尚未执行任何操作,但这是它的样子。
void Beacon::send(void *arg){
//Do stuff
}
每次运行代码时,我都会无效使用非静态成员函数错误。我尝试过使用& send,但是没有用。我也设置了最后一个NULL参数,但是没有用。我一直在寻找其他示例代码来尝试和模仿它,但似乎没有任何效果。我做错了什么?
答案 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);