Читать книгу Dojos für Entwickler 2 - Stefan Lieser - Страница 66

Der Haken an der Sache

Оглавление

Es sei gleich erwähnt, dass die Implementation einen Haken hat: Der Flow kann nicht mehrfach durch den Gather- Baustein fließen. Die beiden Inputs können beide nur genau einmal aufgerufen werden. Beim zweiten Aufruf ist die BlockingCollection im Zustand AddingCompleted. Die Lösung dieses Problems ist deutlich aufwendiger, als es zunächst erscheinen mag. Prinzipiell müsste die BlockingCollection für jeden neuen Satz von Eingangsdaten erzeugt werden. Doch die Input1- und Input2-Aufrufe müssten korreliert werden: Es muss erkannt werden, welche Aufrufe zusammengehören. Wenn beispielsweise Input1 erneut aufgerufen wird, darf die BlockingCollection erst neu angelegt werden, wenn die bisherige abgearbeitet ist.

Das gleiche Problem stellt sich übrigens auch bei der asynchronen Verwendung des Join-Bausteins aus dem ebclang-Projekt [1]. Auch hier muss bei asynchroner Verwendung eine Korrelation und eine Eingangswarteschlange für die Inputs verwendet werden.

Diese Herausforderung geht deutlich über den Rahmen einer übung hinaus. Nichtsdestoweniger mag sich der geneigte Leser an dieser Herausforderung versuchen. Die asynchrone Programmierung wird mit steigender Zahl von Prozessorkernen einen größeren Stellenwert einnehmen. Da lohnt es, sich beizeiten damit zu befassen.

Dojos für Entwickler 2

Подняться наверх