В прошлой статье мы увидели, как работать с классом ConcurrentQueue. На этот раз давайте посмотрим, как работать с ConcurrentStack в нашем многозадачном приложении.

ConcurrentStack находится в пространстве имен System.Collections.Concurrent. Кроме того, эта структура аналогична классу Stackиз пространств имен System.Collections и System.Collections.Generic.

Как и класс Stack, класс ConcurrentStack позволяет нам работать в режиме «Первым пришел, последним вышел» с разными потоками.

В приведенном ниже коде представлен простой способ реализации ConcurrentStack:

По сути, приведенный выше код суммирует все числа внутри параллельного объекта стека. Здесь есть два важных метода для обработки ConcurrentStack:

  • Push: добавляет новый элемент сверху из объекта Stack.
  • TryPop: пытается получить первый элемент в верхней части объекта Stack.

Обратите внимание, что сумма всех чисел была получена из разных потоков в цикле Parallel.For, и нам снова не нужно беспокоиться о проблеме состояния гонки. >» в нашем многозадачном приложении.

Я надеюсь, что это может быть полезно для вас! УДАЧНОГО ПРОГРАММИРОВАНИЯ!!

Ссылка: