锁定属性vs锁定整个对象。哪个性能更好?

时间:2017-08-22 22:17:46

标签: c# multithreading

我正在编写一个triggerbot,我正在创建一个名为settings的类,其中包含私有变量(表单中的所有控件)和公共属性(bools和int)

<div id="Text">
  <p id="InsideT">
    Hello
  </p>
</div>

我将编写get set语句,它将从控件中获取值并将值设置为控件。

我希望程序在用户更改输入时动态更新,因为我应该锁定整个Settings类或Settings类中的每个属性。哪个是性能方面更好的选择?

请注意,我知道我必须调用主线程来更改控件中的值。我也知道使用这些属性的线程应该创建它自己的变量私有副本,并在尝试执行任何其他操作之前释放锁。我主要关注的是性能,如果我将设置类锁定在一个没有Thread.Sleep(xx)的无限循环中;是否有可能,该线程将始终锁定设置变量?在我试验另一个项目时发生了类似的事情

1 个答案:

答案 0 :(得分:0)

性能方面我非常确定这是相同的性能。当您使用lock(对象)时,您使用引用号创建一个禁区,而对同一对象的任何其他锁都需要先完成。您通过这种方法实现的目标是避免用户更新不同字段之间的冲突。此外,并发的可能好处可以通过具有多个禁区的开销来补充。做一个小实验,定时两种方法。

相关问题