对象锁定实例成员以同步对它的访问

本文关键字:访问 同步 锁定 实例 成员 对象 | 更新日期: 2023-09-27 18:21:36

为了线程安全(和正确性),是否有必要为创建占位符锁定对象,或者锁定资源本身就足够了(假设没有其他代码需要它)。

锁定系统。随机

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);
    }
}

这可能看起来微不足道,但我关心的是第一个代码块是否容易出现死锁或其他问题

对象锁定实例成员以同步对它的访问

我们之所以避免锁定对象本身,是为了避免在"对象本身"公开的情况下无意中锁定。如果您只在私有类或方法中使用"对象本身",那么使用您提出的方法没有害处。