Wenn du gleichzeitig empfangen (bzw. warten) und verarbeiten willst, wirst du Threads verwenden müssen.
Dabei wird eine Queue zur Kommunikation zwischen den Threads benutzt werden.
Ich fand
diesen Vortrag ziemlich erleuchtend. Hier siehst du die
ursprüngliche Design und
hier das Ergebnis.
So weit wie die Vortragenden musst du das natürlich nicht treiben