lock при компиляции преобразуется в Monitor.Enter Monitor.Exit. Читай про них на MSDN
компилируется в try{ monitor.enter; your code} finally{monitor.release}
обьект - это объект синхронизации. Грубо говоря может быть любой обьект. Но чаще всего это new Object в рамках класса где lock идет
Блок синхронизации в конкретном объекте, через него
Обсуждают сегодня