C# 赋值线程安全
C# assignment thread safe
下面的赋值代码线程安全吗?
public Stream Stream
{
get
{
return stream ?? (stream = new NetworkStream(Socket));
}
set
{
stream = value;
}
}
没有。完全有可能调用 set setter,在评估流之后(为空),但在分配新的 NetworkStream 之前。这意味着新设置的流(通过 setter)被新的 NetworkStream 覆盖。
下面的赋值代码线程安全吗?
public Stream Stream
{
get
{
return stream ?? (stream = new NetworkStream(Socket));
}
set
{
stream = value;
}
}
没有。完全有可能调用 set setter,在评估流之后(为空),但在分配新的 NetworkStream 之前。这意味着新设置的流(通过 setter)被新的 NetworkStream 覆盖。