PittyJ schrieb:
> Ich würde alles mit nur einem Task machen. Wo wäre der Vorteil bei
> mehreren?
Ich arbeite auf einem Dualcore ESP32. Da derzeit ab und zu einige
Latenzen auftreten, erhoffe ich mir durch eine Aufteilung der Arbeit auf
beide Cores eine bessere Performance.
Ich verwende ESP-IDF als Plattform, die Websocket API davon (die ich in
der Websocket-Klasse verwende) erzeugt intern einen eigenen Task. Wenn
nun Daten eintreffen, führt dieser Task u.U. den gesamten Code bis zum
Output aus. In dieser Zeit kann der Task dann natürlich keine weiteren
Events bearbeiten. Eine ähnliche Situation habe ich dann auch mit
Bluetooth LE Sensoren, deren Events im Bluetooth Task dann Websocket
Funktionen ausführen. Klingt für mich irgendwie nicht "richtig".
Da die Kommunikation auf drei Klassen verteilt ist, scheint es auch
erstmal schwierig, genau diese in einen Task zu packen.
Meine Ideen wären daher:
- Die Websocket-Klasse als einen Task definieren und alle Events von der
IDF websocket API bzw. alle send() Aufrufe der Applikation zur API in
eine Queue einzureihen.
Oder
- In MainClass einen Task verwalten, der alle Events von Sensoren und
Anforderungen an Output durch eine Queue von der Kommunikation zu
entkoppeln. Nachteil wäre hier jedoch, dass der interne Websocket Task
immer noch Applikationsspezifisches Protokol Handling ausführen muss.