ConcurrentBag pozwoli wielu wątkom dodawać i usuwać przedmioty z torby. Możliwe, że wątek doda przedmiot do torby, a następnie w końcu zabiera go z powrotem. Mówi, że ConcurrentBag jest nieuporządkowana, ale jak nieuporządkowane? W jednym wątku worek działa jak stos. Czy nieuporządkowany oznacza "nie jak połączona lista"?Co to jest wykorzystanie w świecie rzeczywistym dla ConcurrentBag <T>?
Jaki jest prawdziwy świat za korzystanie ConcurrentBag?
Co masz na myśli „jak to jest nieuporządkowana”? Jest albo określony porządek, albo nie ma go. To tak, jakby powiedzieć "Jak martwy jest Elvis?" –
Kolejność przechowywanych elementów nie należy do firmy klienta. Zatem z punktu widzenia API "nieuporządkowane" zawsze odnosi się do kolejności wyliczania (z metody "GetEnumerator"). –
"brak zamówienia" oznacza, że nie ma żadnych gwarancji dotyczących zamówienia.Obecne zachowanie implementacji wydaje się polegać na tym, że działa jak stos, gdy ten sam wątek dodaje i usuwa, i podobnie jak kolejka, gdy jeden wątek pobiera z innej kolekcji. Ale nie liczyłbym na to zachowanie. Zobacz http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=842, aby uzyskać więcej informacji. 'ConcurrentBag' może dać lepszą wydajność niż' ConcurrentQueue', jeśli kolejność nie jest ważna, a wątki mogą być zarówno producentem, jak i konsumentem. –