Я читаю aС# книгу, которая описывает шаблон SyncRoot. Это показывает
void doThis()
{
lock(this){ ... }
}
void doThat()
{
lock(this){ ... }
}
и сравнивается с шаблоном SyncRoot:
object syncRoot = new object();
void doThis()
{
lock(syncRoot ){ ... }
}
void doThat()
{
lock(syncRoot){ ... }
}
Однако я не очень понимаю разницу здесь; кажется, что в обоих случаях оба метода могут быть доступны только одному потоку за раз.
Книга описывает... поскольку объект экземпляра также может использоваться для синхронизированного доступа извне, и вы не можете управлять этой формой самого класса, вы можете использовать шаблон SyncRoot Eh? "объект экземпляра"?
Может кто-нибудь сказать мне разницу между двумя подходами выше?