在我的多线程App中,我有一个包含private readonly
实例变量的类,该变量在构造函数中由随机数初始化。
class MyClass
{
private readonly int randomNumber;
public MyClass()
{
randomNumber = new Random().Next();
}
// Is called by different threads
public int getRandomNumber()
{
return randomNumber;
}
}
在应用程序getRandomNumber()
中由多个线程调用。我必须对螺纹安全采取任何预防措施吗?
作为一个后续问题:当我将变量设为静态并在声明中对其进行初始化时,我的威胁安全问题会发生什么变化呢?
class MyClass
{
private static readonly int randomNumber = new Random().Next();
...
}
答案 0 :(得分:1)
只有在读取和写入的情况下才需要注意事项,但由于您的变量是只读的,我认为在任何情况下都不需要任何预防措施,无论是多线程还是单线程。
答案 1 :(得分:0)
是的 - 在完全构建之前,没有其他代码可以看到该对象。
注意:强>