Unterschied zwischen DataflowBlockOptions.BoundedCapacity und BufferBlockT

8

Nehmen wir an, ich habe eine einfache ActionBlock<int>

%Vor%

Ich kann eine begrenzte Kapazität angeben, um die Pufferung zu aktivieren:

%Vor%

Ist es besser, ein BufferBlock<T> zu erstellen und es mit dem actionBlock zu verknüpfen, ist es dasselbe? Oder ist es redundant?

    
i3arnon 02.01.2014, 16:52
quelle

1 Antwort

9

Wenn Sie gerade den bounded BufferBlock vor Ihrem ActionBlock hinzugefügt haben, dann würde das nicht korrekt funktionieren, weil der ActionBlock immer noch unbegrenzt wäre. Also würden sich Gegenstände in der Eingabewarteschlange des ActionBlocks ansammeln und nichts erreichen.

Wenn Sie den bounded BufferBlock hinzugefügt und auch die BoundedCapacity des ActionBlocks auf 1 gesetzt haben, würde das funktionieren (plus minus 1).

Auf diese Weise gibt es nicht viel (außer ein wenig Overhead), also sollten Sie BoundedCapacity des ActionBlocks generell festlegen. Es kann jedoch Fälle geben, in denen die Kombination aus einem begrenzten BufferBlock und einem ActionBlock, der auf 1 beschränkt ist, sinnvoll ist. Zum Beispiel, wenn Sie die Kapazität erst nach dem Erstellen des ActionBlocks festlegen möchten.

    
svick 03.01.2014, 22:23
quelle