Lock is a thread safe mechanism,where you allow only one thread to access a block of code(Critical Section) and block other threads,untill the current thread releases the lock(Mutual Exclusion).
lock (object) { // crtical section }
Internally the Lock get’s translated with Monitor.Enter(Object) and Monitor.Exit(object). Lock is a wrapper/high level construct provided by C#.