ConcurrentStack
ConcurrentStack ile iş parçacığı güvenli yığını öğrenirsin.
ConcurrentStack
ConcurrentStack<T>, iş parçacığı güvenli son-giren-ilk-çıkar (LIFO) yığınıdır. Push ile tepeye ekler, TryPop ile tepeden çıkarırsın. İç yapı yine kilit gerektirmeyen (lock-free) bir bağlı listedir.
Geri izleme (backtracking), geri al (undo) veya son işlenen önce işlenecek şekilde görev yığınları için uygundur. Aynı iş parçacığı ekleyip çıkardığında, yerel tepe önbelleği sayesinde çok hızlıdır.
PushRange ve TryPopRange
PushRange(T[] items) birden çok öğeyi tek seferde tepeye ekler; her birini ayrı ayrı Push etmekten daha verimlidir. TryPopRange(T[] items) ise bir diziyi dolduracak kadar öğeyi tepeden çıkarır.
Toplu işlemlerde bu metotlar içerideki eşzamanlama yükünü azaltır. Tek öğe işlemleri için Push ve TryPop yeterlidir.
Uygulama Yığına ekle ve boşalt
Aşağıdaki stack boş. Push ile üç öğe ekle: "1", "2", "3". Sonra while (stack.TryPop(out var item)) döngüsüyle her öğeyi yazdır. LIFO olduğu için çıktı 3, 2, 1 sırasında olur.
Örnek çözümü göster
stack.Push("1"); stack.Push("2"); stack.Push("3"); Sonra while (stack.TryPop(out var item)) Console.WriteLine(item);
Örnek çözüm:
using System;
using System.Collections.Concurrent;
class Program
{
static void Main()
{
var stack = new ConcurrentStack<string>();
stack.Push("1");
stack.Push("2");
stack.Push("3");
while (stack.TryPop(out var item))
{
Console.WriteLine(item);
}
}
}
Kendini test et
-
Yığın metotlarını eşleştir
- Push
- Tepeye ekle
- TryPop
- Tepeden çıkar
- TryPeek
- Çıkarmadan tepeye bak
-
Push çağrısını tamamla
stack.____;Cevabı göster
stack.Push("ilk"); -
ConcurrentStack'in sıralama davranışı nedir?
- LIFO (son giren ilk çıkar)
- FIFO (ilk giren ilk çıkar)
- Sıralı (sorted)
- Rastgele (unordered)
Cevabı göster
LIFO (son giren ilk çıkar) — Doğru. ConcurrentStack LIFO sıralar: son eklenen ilk çıkar.