я пытаюсь запустить конечный автомат в отдельном потоке:
int main(int argc, char *argv[])
{
uint8_t payload[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};
MessageA* message_temp = new MessageA(0x0F, payload); //MessageA derives from Message
std::vector<Message*> outBuffer;
pthread_t t1;
int rc;
rc = pthread_create(&t1, NULL, createFsmThread,pParam);
rc = pthread_join(t1,NULL);
/* Perform some operations */
for(i = 0; i < 5; i++)
{
outBuffer.push_back(message_temp);
}
return EXIT_SUCCESS;
}
void *createFsmThread(void* lpParam)
{
std::cout << "Start the FSM Threat for Message Handling :\n\n";
struct fsm_thread_args *pParam = (fsm_thread_args*)lpParam;
// fsm = new CSMManager(pParam-> ........ ); not important for the error
}
Pthread не может успешно вернуться из-за операции push_back (). Если я выведу команду из цикла push_back, поток может успешно вернуться, и программа завершит работу в допустимом состоянии. Но с циклом push_back возврат потока не работает успешно. Я думаю, что причиной повреждения памяти может быть тип, но я не знаю, как решить эту проблему !!
Кто-нибудь может мне помочь?
Большое спасибо!
Задача ещё не решена.