![]() |
Created by Thiago Russo
over 8 years ago
|
|
Question | Answer |
O que são Concurrent Collections? Quais são? | O .Net oferece algumas classes de coleção p/ uso em ambientes concorrentes (multithreading). São coleções Thread-Safe => internamente utilizam sincronização p/ certificar que podem ser acessados por várias Threads aos msm tempo. BlockingCollection<T> ConcurrentBag<T> ConcurrentDictionary<Tkey, T> ConcurrentQueue<T> ConcurrentStack<T> |
BlockingCollection<T> O que é? Como funciona? | É um envólucro para outras coleções. É Thread-safe para add e remover dados. ADD é rápido, mas podemos definir um limite máximo superior. Ao atingi-lo, add um bloco de itens na Thread chamada até ter espaço na BlockingColleciton REMOÇÃO de um item pode ser BLOQUEADA até que os dados tornem-se disponíveis. Ex: uma coleção comum pode "explodir" em multithread, pois 1 item pode ser removido enquanto outra T está tentando acessar |
BlockingCollection<T> Exemplo | |
BlockingCollection<T> CompleteAdding | É utilizado p/ sinalizar ao BlockingCollection que não há + itens p/ serem add. Se outras Threads estão aguardando para add novos itens, elas NÃO ESTARÃO MAIS BLOQUEADAS |
BlockingCollection<T> GetConsumingEnumerable | |
ConcurrentBag<T> | |
ConcurrentBag<T> EnumeratingConcurrentBag | |
ConcurrentStack | |
ConcurrentQueue | |
ConcurrentDictonary |
Want to create your own Flashcards for free with GoConqr? Learn more.