我在C#中有类似以下的代码:
private double _x;
private bool _xCalculated;
private double GetX() {
if (!_xCalculated) {
_x = ... // some relatively expensive calculation
_xCalculated = true;
}
return _x;
}
我的问题是,这个方法是线程安全的吗?据我所知,最坏的情况是两个或更多线程同时进入此方法并多次计算_x
,但对于该类的任何实例,结果保证是相同的,因此这不是一个特别大的问题。
我的理解正确吗?