2011-04-30 10 views
11

He pasado por msdn donde está escrito que todas las clases estáticas son seguras para hilos. Así que el artículo es para la versión 1.1 ...¿Están seguras las clases de Static?

http://msdn.microsoft.com/en-us/library/d11h6832(v=vs.71).aspx

Todos los miembros estáticos públicos (métodos, propiedades, campos y eventos) dentro del soporte de .NET Framework acceso concurrente dentro de un entorno multiproceso. Por lo tanto, cualquier miembro estático de .NET Framework se puede invocar simultáneamente desde dos subprocesos sin encontrar condiciones de carrera, interbloqueos o bloqueos.

+3

¿Cuál es su verdadera pregunta? – Achim

+1

* No hay magia escondida en el CLR que hace que un miembro grabable sea seguro para subprocesos. * Ver [aquí] (http://social.msdn.microsoft.com/Forums/en/clr/thread/2de53f4d-baf2-4b65 -9d0f-82508600fc70). –

+0

@Paul Keister, quiere decir que todos los métodos estáticos, propiedades, campos y eventos son seguros para subprocesos, según el artículo .... –

Respuesta

8

No, no dice que las clases estáticas son seguras para hilos, dice que los miembros estáticos públicos son seguros para subprocesos.

Para métodos estáticos, por ejemplo, esto significa que solo usan los datos que envía como parámetros u otros miembros estáticos que también son seguros para subprocesos.

No tiene que sincronizar llamadas a métodos estáticos, a menos que sea necesario para proteger los datos que envía al método.

11

Lo que esto significa es que todos los miembros estáticos dentro de .NET framework están diseñados de forma segura para hilos. Eso significa que todos los métodos/campos/propiedades estáticos desarrollados por Microsoft para .NET Framework. Si desea utilizar un miembro estático proporcionado por .NET Framework, puede asumir que es seguro para subprocesos y usarlo como tal. Sin embargo, aún sospecho de la validez de esa afirmación y asumiré la seguridad sin hilos hasta que se demuestre lo contrario.

Cualquier clase que escriba (estática, o no) usted mismo y que tenga miembros estáticos podría o no ser seguro para subprocesos dependiendo de cómo los escriba. No será mágicamente seguro para hilos solo porque es un método/clase estático.

también echar un vistazo a esto para entender cuáles son los miembros estáticos y cuáles son las clases estáticas:

Static Classes and Static Members

+0

Linked doco 404s –

Cuestiones relacionadas