【发布时间】:2014-06-23 21:49:52
【问题描述】:
你好,根据http://msdn.microsoft.com/en-us/library/c5kehkcz.aspx 可以声明一个对象用于锁定:
private Object thisLock = new Object();
但是当我需要从静态方法中锁定它时,我需要将其声明为静态:
private static Object thisLock = new Object();
然后更多来自 MSDN 页面,
lock("myLock") 是一个问题,因为进程中使用相同字符串的任何其他代码都将共享相同的锁。
所以如果是静态对象,而不是字符串,当同一个方法被多次调用,每个人都尝试锁定thisLock,会不会有问题,因为是同一个静态对象,所以他们实际上是共享锁的?
感谢您的宝贵时间。
【问题讨论】:
-
是的,它们都会锁定同一个对象实例。那是问题吗?这似乎是你的意图。当然,对于静态,每个实例都使用相同的锁(而不是不同的锁),但这是静态的预期......我错过了你的问题吗?
标签: c# .net multithreading locking