Mein Code ist voll mit Kommentaren. Die einzelnen Funktionen sind recht kurz. Versuch den Code zu übersetzen und beobachte ihn mit htop. Versuche die einzelnen Funktionen zu verstehen. Dann klappt das![]()
was ist eine bash und was ist ein bash worker...??![]()
Mein Code ist voll mit Kommentaren. Die einzelnen Funktionen sind recht kurz. Versuch den Code zu übersetzen und beobachte ihn mit htop. Versuche die einzelnen Funktionen zu verstehen. Dann klappt das![]()
sorry, was ist htop?
und wie geht das dann später, wenn mein thread (der, der u.U. mal hängt) in 1-ms loops 1 kB-Strings an den Arduino sendet und sofort wieder 1kB-Strings abholt (> 50 GPIOs und Sensorwerte lesen/schreiben in Echtzeit), und diese Strings (und ihre daraus errechneten/extrahierten Zahlenwerte) sofort auch für alle meine anderen Threads in Echtzeit (1ms) zur Verfügung stehen sollen?
htop: https://wiki.ubuntuusers.de/htop/
bash: Shell unter Linux. Wird gestartet wenn duc duch mit ssh oder vom GUI und dem Terminal mit deinem Pi verbindest.
Wenn der hängt, wird der Subprozess gekillt und ein neuer gestartet. Das macht mein Beispiel.
Die Werte die der Kollege per UART/tty/RS232 liefert werden einfach per Inter Prozess Kommunikation an die anderen Prozesse/threads weiter gegeben.
ach so, momentan starte ich mein Programm direkt aus der Geany IDE heraus (F5) - oder aus dem Filemanager (leafpad).
ssh verwende ich nie, ich kompiliere lokal auf dem Pi (mit der Geany IDE).
Ich verstehe aber auch das Konzept mit dem Subprozess nicht: heißt das, mein Programm startet ein 2.Programm?
ja: Aber das Programm das ausgeführt wird, ist nur eine andere Funktion in deinem Hauptprogramm. In meinem Beispiel failing_worker().
ok, danke -
ich werde mich jetzt am besten mit deinem Code mal 2 Jahre in eine Einsiedelei zurückziehen (mit Internet) und versuchen darüber zu meditieren...
(ich hatte ehrlich gesagt gehofft, du könntest meinen obigen Code mit einer Hand voll Zusatzzeilen so verbessern, dass er dennoch meinen hängenden Thread einzeln killt und neu startet...)
Du siehst hier den "master()" und im Baum weiter unten den "worker" der die Funktion faiing_worker() ausführt.
- - - Aktualisiert - - -
Empfehlung zur Linux Programmierung hab ich weiter oben schon geschrieben. Das Buch ist sehr gut!
habe jetzt noch mal etwas genauer deinen Code studiert, aber nutzt du denn wirklich pthread? sieht irgendwie wie std::thread aus, das verwende ich aber ja gar nicht...
Nein, ich nutze keinen Thread. Nur fork ()
- - - Aktualisiert - - -
Bzw sleep_for um zu schlafen. Das ist c++11
Lesezeichen