Я узнал о блокировке потоков и не нашел объяснения, почему создание типичного объекта System.Object, его блокировка и выполнение любых действий требуется во время блокировки обеспечивает безопасность резьбы?
Пример
object obj = new object()
lock (obj) {
//code here
}
Сначала я подумал, что он просто используется в качестве заполнителя в примерах и предназначен для замены на Тип, с которым вы имеете дело. Но я нахожу такие примеры, как , как указывает Деннис Филлипс , похоже, не отличается от фактического использования экземпляра Object.
Возьмем пример необходимости обновления частного словаря, что делает блокировку экземпляра System.Object для обеспечения безопасности потоков, а не фактической блокировки словаря (я знаю, что блокировка словаря в этом случае может вызвать проблемы с синхронизацией) ? Что, если бы словарь был общедоступным?
//what if this was public?
private Dictionary someDict = new Dictionary();
var obj = new Object();
lock (obj) {
//do something with the dictionary
}