c ++方法中的pthread_create

时间:2014-04-09 21:18:06

标签: pthreads

每次调用方法时,是否有一种简单的方法来创建新的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*)

我做错了什么?

1 个答案:

答案 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);