每次调用方法时,是否有一种简单的方法来创建新的pthread?
我在某些情况下激活方法,这是与其他程序进行交互的唯一方法。我需要调用sleep并在调用所述方法后执行另一个方法,在等待期间有另一个调用选项 - 这就是我想使用线程的原因。
我想使用标准:
pthread_create(&new_thread, NULL, threadbody() );
像这样
std::vector<phtread_t> thread(20)
...
pthread_t new_thread;
int rc;
rc = pthread_create(&new_thread, NULL, threadbody() );
threads.push_back(new_thread);
但我要么得到错误的使用(void *)函数。
argument of type ‘void* (App::)(void*)’ does not match ‘void* (*)(void*)
我做错了什么?
答案 0 :(得分:0)
您的函数是该类的非静态成员。这是禁忌,因为pthread_create仅适用于C领域。
要抵消这一点,您可以
class X
{
public:
static void* callback(void* p)
{
X* x = reinterpret_cast<X*>(p);
x->function();
return 0;
}
void function(void)
{
// do work here
}
};
X obj;
pthread_create(&new_thread, &obj, &X::callback);