В прошлой статье мы увидели, как работать с классом ConcurrentQueue. На этот раз давайте посмотрим, как работать с ConcurrentStack в нашем многозадачном приложении.
ConcurrentStack находится в пространстве имен System.Collections.Concurrent. Кроме того, эта структура аналогична классу Stackиз пространств имен System.Collections и System.Collections.Generic.
Как и класс Stack, класс ConcurrentStack позволяет нам работать в режиме «Первым пришел, последним вышел» с разными потоками.
В приведенном ниже коде представлен простой способ реализации ConcurrentStack:
По сути, приведенный выше код суммирует все числа внутри параллельного объекта стека. Здесь есть два важных метода для обработки ConcurrentStack:
- Push: добавляет новый элемент сверху из объекта Stack.
- TryPop: пытается получить первый элемент в верхней части объекта Stack.
Обратите внимание, что сумма всех чисел была получена из разных потоков в цикле Parallel.For, и нам снова не нужно беспокоиться о проблеме состояния гонки. >» в нашем многозадачном приложении.
Я надеюсь, что это может быть полезно для вас! УДАЧНОГО ПРОГРАММИРОВАНИЯ!!
Ссылка: