Das kommt darauf an.
Es spricht ganz schwer etwas dagegen, wenn der Datenaustausch über lokale Variable erfolgt. Dann ist die Synchronisation nicht gegeben. Der Producer produziert ohne Rücksicht auf Verluste in seinem Takt darauf los, und der Consumer liest, ja nachdem ob seine Schleife schneller oder langsamer läuft, entweder Werte doppelt oder gar nicht. Dann ist die Zusammenlegung von beidem in einer einzigen Schleife das einzig Wahre.
Bei Verwendung eine Queue zu Übertragung gibt es aber Vorteile bei dieser Struktur.
Z.B. dieses Szenarium:
Die Producer erzeugt gleichmäßig Werte. Der Consumer ist im allgemeinen schneller als der Producer. Solange das der Fall ist, befindet sich in der Queue immer höchstens 1 Element.
Nur manchmal, so sei jetzt mal angenommen, braucht der Consumer länger und ist langsamer als der Producer (wenn z.B. etwas abzuspeichern ist). In diesem Fall macht der Producer gleichmäßig weiter, lediglich die Queue, die sonst immer nur höchsten ein Element enthält, füllt sich mit mehreren Elementen an. Bei den folgenden Zyklen leert sich dann die Queue wieder.
Bei Verzicht auf die Queue und Zusammenlegung von Producer und Consumer in eine einzige Schleife würde der Producer in seiner Erzeugung hingegen sofort gestoppt, wenn der Consumer zur Verarbeitung der Daten mal etwas länger braucht.
Edit: Habe wohl nur Bekanntes gesagt, es ging ja eigentlich um die dritte Schleife ganz außen. Die wird ja nicht mehr durchlaufen, solange die Datenerfassung läuft.
Weder läßt sich die Datenerfassung dann abstoppen noch das ganze Programm beenden. Das sind aber alles nur Hürden für den Anfänger, wie Supergurus haben da natürlich unsere Tricks im Beutel, um das Problem zu lösen