I wan't eine Liste von mehreren BlockingCollectionsIst eine Liste <BlockingCollection <T>> Thread sicher?
List<BlockingCollection<ExtDocument>> a = new List<BlockingCollection<ExtDocument>>();
und die Prüfung in subthreads zu halten, wenn eine der ‚Warteschlangen‘ noch Produkte haben anhängig:
if (a.Where(x => x.IsAddingCompleted).Count > 0)
Ist die Verwendung eines List<T>
in diesem Fall Thread-sicher , wenn die Anzahl der Elemente in der Liste nicht nach der Initialisierung ändern (der Inhalt der blockinglists in der Sammlung wird sich natürlich ändern ...)?
Oder sollte ich entscheiden sich für eine array of BlockingCollection
oder die folgende Konstruktion:
BlockingCollection<BlockingCollection<workitem>> a = new BlockingCollection<BlockingCollection<workitem>>();
Wenn sich die Liste nach der Initialisierung nicht ändert, ist es vollkommen in Ordnung, nur eine Liste zu verwenden. Nur das Lesen ist nicht das Problem der Nebenläufigkeit, es ist seine Veränderlichkeit, die es schließlich zu einem Problem macht. – Caramiriel
Ich würde lieber ein Array anstelle von 'List' verwenden. Auf diese Weise wird deutlich, dass sich die Anzahl der Elemente nicht ändert. –
CodesInChaos
@Caramiriel Vielen Dank für die Information! CodesInChaos: Danke für den Tipp. Dies wird in der Tat die Lesbarkeit für zukünftige Programmierer erhöhen – User999999