class Unit {
private readonly string name;
private readonly double scale;
public Unit(string name, double scale) {
this.name = name;
this.scale = scale,
}
public string Name { get { return name; } }
public string Scale { get { return scale; } }
private static Unit gram = new Unit("Gram", 1.0);
public Unit Gram { get { return gram; } }
}
Varios hilos tienen acceso a Unit.Gram
. ¿Por qué está bien que varios hilos lean simultáneamente Unit.Gram.Title
?¿Por qué los objetos inmutables son seguros para subprocesos?
Mi preocupación es que se están refiriendo a la misma ubicación de memoria. Un hilo comienza a leer esa memoria, entonces, ¿no está "bloqueado"? ¿El .NET maneja la sincronización para esta sección crítica debajo? ¿O me equivoco al pensar que la lectura simultánea necesita sincronización?
"Mi preocupación es que se están refiriendo a la misma ubicación de memoria". ¿Son ellos? Tal vez. Esa no es tu preocupación, es la preocupación de VM. La lectura simultánea no necesita sincronización, ¿por qué? –
* "¿por qué" * >> no es esa la pregunta aquí? Si leo el mismo libro que mi novia lee, al mismo tiempo, siempre terminamos peleando por eso. Sé que no es un problema en las computadoras (no se producen dos hilos al mismo tiempo, la arquitectura de la CPU se encarga de eso), pero me parece una pregunta muy legítima :) – Abel
Leer un libro implica un estado mutable (página actual, rayo, etc.). No estás peleando por el libro, sino por el procesamiento del mismo. – sisve