단일 인수로 pthread_create를 실행하여 새 스레드를 만들려고합니다.종료 코드 -11 '분할 오류'실행 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