是一个类范围的整数,仅在开始时分配,以便线程安全地读取其值
本文关键字:分配 线程 开始时 安全 读取 一个 整数 范围 | 更新日期: 2023-09-27 18:14:36
如果我在程序开始时分配了一个变量,然后程序创建了几个线程,然后引用它,它是线程安全的吗?
private int myVal
private void StartOfApp()
{
myVal = 99;
}
private void MethodCalledFromVariousThreads()
{
int i = 100;
if (i > myVal) //Is reading this variable thread safe?
{
//Do Stuff
}
}
}
只要你能保证StartOfApp
在MethodCalled
之前完成任务就可以了。
我觉得这样更好:
private const int myVal = 99;
private void MethodCalledFromVariousThreads()
{
int i = 100;
if (i > myVal) //Is reading this variable thread safe?
{
//Do Stuff
}
}
是的,这是线程安全的。因为您从未写入变量(我假设),它的数据本质上是不可变的。(好吧,它确实是可变的,因为这是c#,但你懂的)因此,它将始终返回相同的值,因此可以安全地读取。