2010-04-20 6 views

Respuesta

20

Los miembros son seguros para la ejecución de subprocesos, pero no debe esperar que una secuencia de llamadas sea segura para subprocesos. Por ejemplo, usted no puede esperar el siguiente a ser flujos seguros:

if (!dictionary.ContainsKey(key)) 
{ 
    // Another thread may have beaten you to it 
    dictionary.Add(key, value); 
} 

En su lugar, utilizar la nueva API de flujos seguros - por ejemplo, AddOrUpdate (la última gana en caso de una condición de carrera) o GetOrAdd (la primera gana en caso de una condición de carrera).

+0

Muy útil Joe ¡Gracias! +1 – SDReyes

+0

Esta es una respuesta mucho mejor que la respuesta aceptada. – Martin

+0

Voy a esperar por más respuestas ahora, Martin. Gracias:) – SDReyes

-1

ConcurrentDictionary es seguro para subprocesos. No tiene que preocuparse por eso incluso cuando lo usa desde múltiples hilos.

+0

Los métodos de valor de fábrica utilizados en 'GetOrAdd()' y 'AddOrUpdate()' no son seguros para la fabricación de subprocesos, aún se requiere consideración aquí. – roken

2

No he tenido problemas con los objetos de la colección Concurrent hasta el momento. Son un gran impulso a mi productividad al permitirme no preocuparse por los problemas de concurrencia con las colecciones y centrarse en escribir la lógica de la aplicación.

Esto no quiere decir que no haya problemas. Nada de lo que me he encontrado.

+0

Gracias Chaos +1 – SDReyes

Cuestiones relacionadas