gpt4 book ai didi

c# - C# 中锁定(或进入/退出)的最佳实践

转载 作者:太空狗 更新时间:2023-10-29 22:54:54 24 4
gpt4 key购买 nike

我有一个测量仪器对象:

public class Instrument
{
public double Measure()
{
return 0;
}
}

我有一个设备需要进行一些测量:

public class Device
{
public Instrument MeasuringInstrument { get; set; }
public void DoMeasuring()
{
var result = this.MeasuringInstrument.Measure();
}
}

测量仪器一次只能在一台设备上运行,但许多设备可能使用同一台仪器。我是线程的新手,据我了解,以下两种解决方案都有注意事项。

public class Instrument
{
public double Measure()
{
lock(this)
{
return 0;
}
}
}

public class Device
{
public Instrument MeasuringInstrument { get; set; }
public void DoMeasuring()
{
lock(this.MeasurementInstrument)
{
var result = this.MeasuringInstrument.Measure();
}
}
}

我读过最好锁定私有(private)对象,但我不知道如何做到这一点,同时仍允许在设备上获取/设置 MeasuringInstrument。有什么建议吗?

非常感谢,

最佳答案

如果你的instrument被多个devices使用,最好的做法是在你的instrument类中设置lock .所以第一个解决方案效果更好。

但最好创建一个新的锁对象并在 instrument 类中使用它。

public class Instrument
{
Object lockKey = new Object();
public double Measure()
{
lock(lockKey)
{
return 0;
}
}
}

关于c# - C# 中锁定(或进入/退出)的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5878520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com