Die erste Möglichkeit besteht darin, zwischen Produzent und Konsument einen Buffer-Task einzufügen (siehe Abb. 19.3)
Abbildung 19.3: Ein Buffer als Zwischen-Task
In diesem Fall sendet der Produzent ein Datenelement an den Buffer
und setzt seine Arbeit fort, sobald der Buffer-Task das Element
entgegengenommen hat. Der Konsument ruft den Buffer-Task auf, um
das nächste Element zu bekommen. Durch diese Art der Programmierung
sind der Produzent und der Konsument in bezug auf ihren zeitlichen
Ablauf entkoppelt, sie müssen allerdings mit dem Buffer-Task mittels
Rendezvous kommunizieren.