Wenn du gleichzeitig empfangen (bzw. warten) und verarbeiten willst, wirst du Threads verwenden müssen.
Das stimmt, aber nur wenn beides (UDP Kommunikation und Verarbeitung für Protokollierung und Visualisierung) im gleichen Prozess stattfindet. Nachteil einer Queue im gleichen Prozess ist, dass mit dessen Abbruch alle noch nicht protokollierten oder visualisierten Daten in der Queue verloren sind.
Lösungen wären dann Speichern der UDP Kommunikation in eine Datenbank, oder Einstellen in eine
IPC Queue wie Named Pipes (oder shared Memory Mapped Files). Solange das performant möglich ist, kann es synchron mit dem Empfangen und Quittieren der UDP Daten geschehen.