0
是否需要为线程安全性(和正确性)创建一个占位符锁对象或者是否足以锁定资源本身(假设其他代码不需要它)。对象锁实例成员来同步对它的访问
使用单独的占位符锁定System.Random
private static readonly Random rnd = new Random();
public static int Rand(int min, int max) {
lock(rnd) {
return rnd.Next(min, max);
}
}
/伪锁定对象
private static readonly Random rnd = new Random();
private static readonly object rndLock = new object()
public static int Rand(int min, int max) {
lock(rndLock) {
return rnd.Next(min, max);
}
}
这可能看起来微不足道,但我担心与如果所述第一码块是易受死锁或其他问题
为锁定创建单独的对象不是必需的,但强烈建议。原因包括在(重复) - [为什么锁(这){...}不好](http://stackoverflow.com/questions/251391/why-is-lockthis-bad/251668#251668)。 – 2014-09-10 23:10:08