In this post, I will try to briefly explain how locking mechanisms provided by .NET work and how CLR manages to keep track of locks and do the synchronization, allowing us to achieve mutual exclusion.