EDIT: As it turns out when I was browsing I found a question the appears to be the same as mine which I didn\'t find earlier: Difference between lock(locker) and lock(variab
You've pretty much answered your own question. For locking, it's generally better to create an object specifically for the purpose, and usually held privately for use by accessor methods that express synchronisation logic at a high level.