Ich habe eine Funktion say void *WorkerThread (void *ptr)
.Wie führe ich den Thread in der Hauptfunktion unendlich, ohne dass das Programm beendet wird?
Die Funktion *WorkerThread(void *ptr)
Endlosschleife hat, der liest und kontinuierlich von der seriellen Schnittstelle
Beispiel
void *WorkerThread(void *ptr)
{
while(1)
{
// READS AND WRITE from Serial Port USING MUXTEX_LOCK AND MUTEX_UNLOCK
} //while ends
}
Die andere Funktion I worte ist ThreadTest
Beispiel
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;
}
In main
Funktion
schreibt Ich habe so etwas wie
int main(int argc, char **argv)
{
fd = OpenSerialPort();
if(ConfigurePort(fd) < 0) return 0;
while (true)
{
ThreadTest();
}
return 0;
}
Nun, wenn ich diese Art von Code mit Debug-Anweisung ausführen es läuft für einige Stunden in Ordnung und dann Nachricht werfen wie „kann nicht in der Lage Thread zu erstellen“ und Anwendung beendet wird. Hat jemand eine Idee, wo ich Fehler mache? Auch wenn es eine Möglichkeit gibt ThreadTest
in main
mit while(true)
auszuführen, da ich bereits while(1)
in ThreadWorker
verwende, um unendlich zu lesen und zu schreiben. Alle Kommentare und Kritik sind willkommen. Danke & Grüße, SamPrat.
Bitte bearbeiten, so dass alle Ihre Code in einem Code-Umgebung (4 Räume am Anfang). – RedX
@RedX -> Ich habe den Abstand wieder gemacht. Danke für das Zeigen – samprat