Zdarza mi się co jakiś czas przeprowadzić jakąś rozmowę kwalifikacyjną czy porozmawiać z kimś kto jest programistą. Nie wiem dlaczego, może przez to, że gdzieś w naszych umysłach zatarło się, że kolekcje w .NET to w szczególności List, ArrayList, ObservableCollection. Nikt nic innego nie potrafi wymienić. No może jest ich jeszcze kilka, ale to nie o to chodzi. Na moje pytanie czy używają kolekcji Thread-Safe zazwyczaj widzę u swojego rozmówcy wielkie wilcze oczy i to pytanie wewnątrz umysłu, które aż wylewa się na zewnątrz “coooo?”
W wersji 4 .NET dostaliśmy nową przestrzeń nazw System.Collections.Concurrent (http://msdn.microsoft.com/en-us/library/system.collections.concurrent(v=vs.110).aspx), która to daje nam dostęp do bardzo fajnych i poręcznych obiektów:
- BlockingCollection<T>
- ConcurrentBag<T>
- ConcurrentDictionary<TKey, TValue>
- ConcurrentQueue<T>
- ConcurrentStack<T>
- OrderablePartitioner<TSource>
- Partitioner
- Partitioner<TSource>
- IProducerConsumerCollection<T>
W kolejnych wpisach postaram się wyjaśnić co dokładnie kryje się pod ich postacią oraz jak można je wykorzystać w naszych/waszych projektach