Gewusst wie: Erstellen eines Objektpools mittels ConcurrentBag

Dieses Beispiel zeigt, wie Sie einen parallelen Behälter verwenden, um einen Objektpool zu implementieren. Objektpools können die Anwendungsleistung in Situationen verbessern, in denen Sie mehrere Instanzen einer Klasse benötigen und es teuer ist, die Klasse zu erstellen oder zu löschen. Wenn ein Clientprogramm ein neues Objekt benötigt, versucht der Objektpool zunächst, ein Objekt bereitzustellen, das bereits erstellt und an den Pool zurückgegeben wurde. Nur wenn kein Objekt verfügbar ist, wird ein neues erstellt.

Zum Speichern der Objekte wird ein ConcurrentBag<T>-Objekt verwendet, da es ein schnelles Einfügen und Entfernen unterstützt, besonders dann, wenn der gleiche Thread Elemente hinzufügt und entfernt. Dieses Beispiel kann noch bereitgestellt werden, um es auf eine IProducerConsumerCollection<T> aufzubauen, die von der Behälterdatenstruktur implementiert wird, so wie ConcurrentQueue<T> und ConcurrentStack<T>.

Beispiel

[!code-csharpCDS#04] [!code-vbCDS#04]

Siehe auch

threadsichere Auflistungen