我有一个具有两个属性和两个方法的类。比如下面这个。(请忽略数据类型或返回类型,这只是一个典型场景)
// The methods could be invoked by multiple threads
public class Stock
{
private static int FaceValue {get; set;}
private static int Percent (get; set;}
// method that updates the two properties
Public void UpdateStock()
{
FaceValue += 1;
Percent = FaceValue * 100;
}
// method that reads the two properties
public int[] GetStockQuote()
{
return new int[] { FaceValue, Percent};
}
}
我需要确保这个类是线程安全的。我可以在这两种方法中使用 lock(obj) 作为一种使其成为线程安全的技术,但考虑到以下几点,使它成为线程安全的最佳技术是什么:
只有两个属性被读取/更新。因此,不确定锁定在方法内部是否是一种好技术。
如果我只是让属性线程安全而不是方法或类就足够了吗?
另外,有没有办法使整个类线程安全而不是单个方法或属性?.Net 4.0 中的任何推荐锁定技术?
只是想知道我是否正在考虑这项权利,或者考虑到这些,我是否过于复杂了。非常感谢提前帮助我弄清楚这一点。
玛尼