我試圖通過使用單個參數執行pthread_create來創建新線程。退出代碼-11'Segmentation Fault'正在執行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
是否有任何特別的原因不使用QThread? –
我不知道QThreads存在。感謝提示,它們更容易使用。 – Josch