0

我试图通过使用单个参数执行 pthread_create 来创建一个新线程。

void P2FPanel::startRecording()
{
  qDebug() << "Start recording...";
  qDebug() << "_bag_list: " << _bag_list->size();
  pthread_create(&_playBags_t, NULL, playBags, _bag_list);
  qDebug() << ".... Started";
}

此方法由按钮触发并创建 pthread。这里代码已经退出并出现错误-11(我认为这是分段错误)。调试行显示 _bag_list 不为空。

void* P2FPanel::*playBags(void* arg0)
{
  qDebug() << "Play Bags from _bag_list...";
  QList<BagRef*> *bag_list = (QList<BagRef*>*) arg0;
  qDebug() << "Play " << QString("%1").arg(bag_list->size()) << " Bags";
  //Do stuff
  qDebug() << "Finished playing";
  return 0;
}

此方法应在新线程中运行。

class P2FPanel: public rviz::Panel
{

  private Q_SLOTS:
    void startRecording();

  private:
    QList<BagRef*> *_bag_list;
    void* (*playBags)(void* arg0);
    pthread_t _playBags_t;

};

头文件。

错误来自哪里?线程方法的声明是否正确?

在此先感谢,最好的问候, Josch

4

1 回答 1

0

据我记得,您不能将类方法传递给 pthread。考虑:这个那个。您应该使用静态方法。

于 2013-02-04T12:55:31.353 回答