¿Cómo sabemos si un método es seguro para subprocesos o nohilo generic.list y generic.dictionary seguro en .NET
Por ejemplo, si marca http://msdn.microsoft.com/en-us/library/3wcytfd1.aspx no hay nada que indique su hilo de seguridad.
¿Cómo sabemos si un método es seguro para subprocesos o nohilo generic.list y generic.dictionary seguro en .NET
Por ejemplo, si marca http://msdn.microsoft.com/en-us/library/3wcytfd1.aspx no hay nada que indique su hilo de seguridad.
No, no son seguros para subprocesos (sin realizar su propio bloqueo).
Utilice una de las colecciones Concurrent en su lugar.
El espacio de nombres System.Collections.Concurrent proporciona varias clases de colección de hilo de seguridad que se deben utilizar en lugar de los tipos correspondientes de los System.Collections y espacios de nombres System.Collections.Generic cada vez que varios hilos son accediendo a la colección al mismo tiempo.
Me pregunto por qué no tenemos una clase concurentList –
http://stackoverflow.com/questions/703990/why-is-c-sharp-list-not-thread-safe –
http://blogs.msdn.com/ b/jaredpar/archive/2009/02/11/why-are-thread-safe-collections-so-hard.aspx –
La documentación para toda la clase List<T>
tiene un segmento de hilo de seguridad:
estáticos públicos (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que ningún miembro de instancia sea seguro para subprocesos.
Por verdadero que sea, esta es una documentación estándar que está en prácticamente todos los tipos de .NET (si no todos) . –
Bueno para señalar. Eso explica por qué no hay una lista concurent. La lista ya es concurrente. +1 –
En realidad, no. No hay indicador de que sea seguro para subprocesos. La lista no parece contener ningún método estático. –
Supongamos que una clase no es segura para subprocesos a menos que esté documentada como tal. – millimoose