If some lock statement on the same object is used only in one place of the code, it is functionally equivalent to the situation when no lock is used. Isn't this obvious?
Locks implement
mutial exclusion mechanism which works for only for identical lock object. If two or more blocks of code are executed under
lock
statement with the same lock object, the execution of all these blocks is
mutually exclusive. It is not important if this is the same block of code or different block executed under the
lock
statement with the same lock object; in all cases, each of the blocks can be executed by only one thread at a time, other threads being delayed.
For some background on the topic, please see:
http://en.wikipedia.org/wiki/Mutual_exclusion[
^].
See also:
http://msdn.microsoft.com/en-us/library/c5kehkcz.aspx[
^].
—SA