gpt4 book ai didi

C#使用锁实践

转载 作者:行者123 更新时间:2023-11-30 14:41:20 26 4
gpt4 key购买 nike

我的应用程序中有关键部分,其中包含大量代码:这是在 threadMethod 中锁定访问的更好方法:

A) 锁定所有 block :

private object locker = new object();

private void threadMethod()
{
while(true)
{
lock(locker)
{
// do work - a lot of code here
}
Thread.Sleep(2000);
}
}

B) 使用额外的锁定访问成员canWork:

 private static object locker = new object();
private bool canWork;
private bool CanWork
{
get { lock(locker) { return this.canWork; } }
set { lock(locker) { this.canWork = value; } }
}

private void threadMethod()
{
while(true)
{
if(CanWork)
{
// do work - a lot of code here
}
Thread.Sleep(2000);
}
}

和代码中的某处

CanWork = false;

最佳答案

两者都不是特别好。

  • 第一个的缺点是你持有锁的时间很长。
  • 第二个缺点是检查后状态可能会改变。

而是尝试将不可变参数传递给您的方法(例如数据的副本)。您可能仍需要锁定以构建参数和收集结果,但希望这会缩短很多时间。

关于C#使用锁实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4266467/

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