相关疑难解决方法(0)

为什么锁(这个){...}不好?

MSDN文档说,

public class SomeObject
{
  public void SomeOperation()
  {
    lock(this)
    {
      //Access instance variables
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果可以公开访问实例,那就是"一个问题".我想知道为什么?是因为锁定的持有时间超过了必要的时间吗?还是有一些更阴险的原因?

c# multithreading locking

462
推荐指数
6
解决办法
15万
查看次数

使用lock有什么含义(typeof(string))

我们在工作中就锁定以及究竟发生了什么进行了讨论.触发此讨论的代码是:

        string name = (string)context.Cache[key];

        if (String.IsNullOrEmpty(name)){

            lock (typeof(string)){
                name = (string)context.Cache[key];
                //.. other code to get the name and then store in the cache
            }
        }
Run Code Online (Sandbox Code Playgroud)

我认为这是直截了当的:在缓存中查找一个值,如果它不在那里则获取一个锁,以便在代码获取名称并将其存储在缓存中时没有其他任何中断.

我们的讨论集中在(typeof(string))是否是最好的做事方式,以及究竟是做什么的.

我的问题是lock(typeof(string))究竟做了什么?它是否创建了一个用于锁定的本地字符串,或者它是否创建了具有更大范围的内容,因此可能不安全.

MSDN锁定语句

c#

6
推荐指数
2
解决办法
497
查看次数

使用私有变量锁定c#

根据Eric Gunnerson的说法

  • 使用锁(这个)
  • 使用锁(typeof())

Do锁定私有变量,而不是用户可以看到的内容如果需要私钥锁定,请使用"object key = new object()"

是什么原因??

c# synchronization

4
推荐指数
1
解决办法
2831
查看次数

标签 统计

c# ×3

locking ×1

multithreading ×1

synchronization ×1