У меня есть функция, скажем void *WorkerThread ( void *ptr)
.
Функция *WorkerThread( void *ptr)
имеет бесконечный цикл, который непрерывно читает и пишет с последовательного порта
пример
void *WorkerThread( void *ptr)
{
while(1)
{
// READS AND WRITE from Serial Port USING MUXTEX_LOCK AND MUTEX_UNLOCK
} //while ends
}
Другая функция, которую я пишу, это ThreadTest
пример
int ThreadTest()
{
pthread_t Worker;
int iret1;
pthread_mutex_init(&stop_mutex, NULL);
if( iret1 = pthread_create(&Worker, NULL, WorkerThread, NULL) == 0)
{
pthread_mutex_lock(&stop_mutex);
stopThread = true;
pthread_mutex_unlock(&stop_mutex);
}
if (stopThread != false)
stopThread = false;
pthread_mutex_destroy(&stop_mutex);
return 0;
}
В main
функция
У меня есть что-то вроде
int main(int argc, char **argv)
{
fd = OpenSerialPort();
if( ConfigurePort(fd) < 0) return 0;
while (true)
{
ThreadTest();
}
return 0;
}
Теперь, когда я запускаю такой код соператор отладки работает нормально в течение нескольких часов, а затем выдает сообщение типа «не удается создать поток», и приложение завершает работу.У кого-нибудь есть идеи, где я делаю ошибки.Также, если есть способ запустить ThreadTest
в main
с использованием while(true)
, как я уже использую while(1)
в ThreadWorker
для чтения и записи бесконечно.Все комментарии и критика приветствуются.Спасибо и всего наилучшего, SamPrat.