Estoy leyendo un libro de C# que describe el patrón SyncRoot. Muestra¿De qué sirve el patrón SyncRoot?
void doThis()
{
lock(this){ ... }
}
void doThat()
{
lock(this){ ... }
}
y lo compara con el patrón SyncRoot:
object syncRoot = new object();
void doThis()
{
lock(syncRoot){ ... }
}
void doThat()
{
lock(syncRoot){ ... }
}
Sin embargo, realmente no entienden la diferencia en este caso; parece que en ambos casos solo se puede acceder a ambos métodos por un hilo a la vez.
... El libro describe ... porque el objeto de la instancia también se puede usar para el acceso sincronizado desde el exterior y no puede controlar esta forma la clase en sí, puede usar el patrón SyncRoot ¿Eh? 'objeto de la instancia'?
¿Alguien me puede decir la diferencia entre los dos enfoques anteriores?
Gracias de antemano
En el segundo ejemplo, es SyncRoot() se supone que es doThat()? –
"objeto de la instancia" == "instancia de la clase" Libro mal redactado. –
Gracias por la edición Will Dean. Maldición copiar/pegar :) – Ryan