I've got a question about "lock" statement in C#.
MDSN(https://msdn.microsoft.com/en-us/library/c5kehkcz.aspx) says
The lock keyword ensures that one thread does not enter a critical section of code while another thread is in the critical section. If another thread tries to enter a locked code, it will wait, block, until the object is released.
While I feel that, as long as "lock" prevents multiple threads from executing one block of code, then having a "lock" point should be enough. This is like setting a conditional execution point. If .net knows one thread is inside "lock" block, then other threads should wait. This could be fully handled by .net framework itself. But why do we bother to specify an object to lock? This seems redundant to me.