Стеки и очереди невероятно полезны в параллельном программировании, так же как и в последовательном программировании.
Новые классы ConcurrentQueue<T>
и ConcurrentStack<T>
обеспечивают очень хорошую, поточно-ориентированную реализацию очереди и стека.,Они особенно полезны при работе с многопоточными сценариями производитель / потребитель, так как оба класса являются безблокировочными (хорошими для масштабируемости) и потокобезопасными, а также достаточно производительными.
Кроме того, я хотел бы отметить одинвещь - у вас есть два заблуждения во втором абзаце.Связанные списки не особенно плохи для масштабируемости.Распределение памяти может потребоваться регулярно (хотя есть способы борьбы с этим), но зачастую это меньшая цена, чем другие потенциальные проблемы с точки зрения масштабируемости.(Это действительно зависит от сценария ...) Кроме того, новые классы ConcurrentQueue<T>
и ConcurrentStack<T>
не основаны на (по крайней мере, традиционном) связанном списке.Это класс без блокировки, который внутренне использует связанный список массивов для хранения элементов, например, std :: deque .