AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.7.0" />

 Pool

static class Pool
Provides a pool of used / recycled resources.
using AngleSharp.DOM.Css; using AngleSharp.Parser.Css; using System.Collections.Generic; using System.Diagnostics; using System.Text; namespace AngleSharp { [DebuggerStepThrough] internal static class Pool { private static readonly Stack<StringBuilder> _builder; private static readonly Stack<CssSelectorConstructor> _selector; private static readonly object _lock; static Pool() { _builder = new Stack<StringBuilder>(); _selector = new Stack<CssSelectorConstructor>(); _lock = new object(); } public static StringBuilder NewStringBuilder() { lock (_lock) { if (_builder.Count != 0) return _builder.Pop().Clear(); return new StringBuilder(1024); } } public static CssSelectorConstructor NewSelectorConstructor() { lock (_lock) { if (_selector.Count != 0) return _selector.Pop().Reset(); return new CssSelectorConstructor(); } } public static string ToPool(this StringBuilder sb) { string result = sb.ToString(); lock (_lock) { _builder.Push(sb); return result; } } public static ISelector ToPool(this CssSelectorConstructor ctor) { ISelector result = ctor.Result; lock (_lock) { _selector.Push(ctor); return result; } } } }