我们有一些性能问题,正在考虑从一些经常使用的属性中取出一些线程安全锁。更准确地说,仅来自访问修饰符 getter。改进之处在于,如果某个其他线程正在对同一属性进行获取,则 setter 访问修饰符不再“被阻止”。
-> 当然,必须确保如果让我们说一个整数类型,例如位值 11110011 是 243,一旦开始写入,所有位都会被写入。必须确保写入线程永远不会未完成,并且获取线程成为一些半写入位,从而导致错误值。是这样吗?
如果是这样,该概念是否可用于所有 .net 内置数据类型,也可用于字符串?
请参阅以下显示概念的代码示例:
// for properties used just the "Built-In Types"
// doc: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/built-in-types-table
private int _ActualValue = 0;
private readonly object _Lock_ActualValue = new object();
public int ActualValue
{
get
{
//lock(_Lock_ActualValue) <- remove lock for access modifier get ?
//{
return _ActualValue;
//}
}
set
{
lock (_Lock_ActualValue)
{
if((value != _ActualValue) && (value < 1000))
{
Log("_ActualValue", value.ToString());
_ActualValue = value;
}
}
}
}
精慕HU
慕丝7291255
相关分类