![]() |
Creado por Thiago Russo
hace más de 8 años
|
|
Pregunta | Respuesta |
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 |
¿Quieres crear tus propias Fichas gratiscon GoConqr? Más información.