C#锁定私有静态对象
嗨,根据 为了锁定,可以声明对象: 但当我需要从静态方法锁定它时,我需要将其声明为静态: 然后是MSDN页面上的更多内容 锁(“myLock”)是一个问题,因为进程中使用相同字符串的任何其他代码都将共享相同的锁 因此,如果它是一个静态对象,而不是一个字符串,那么当同一个方法被多次调用时,它们中的每一个都会尝试锁定这个锁,因为它是同一个静态对象,所以它们实际上是共享锁的,这会有问题吗 谢谢你抽出时间 因此,如果它是一个静态对象,而不是一个字符串,那么当多次调用同一个方法时,它会有问题吗 不完全是。字符串是特殊的,它们可以被拘留。不能像控制其他对象那样控制其可见性 基本准则:C#锁定私有静态对象,c#,.net,multithreading,locking,C#,.net,Multithreading,Locking,嗨,根据 为了锁定,可以声明对象: 但当我需要从静态方法锁定它时,我需要将其声明为静态: 然后是MSDN页面上的更多内容 锁(“myLock”)是一个问题,因为进程中使用相同字符串的任何其他代码都将共享相同的锁 因此,如果它是一个静态对象,而不是一个字符串,那么当同一个方法被多次调用时,它们中的每一个都会尝试锁定这个锁,因为它是同一个静态对象,所以它们实际上是共享锁的,这会有问题吗 谢谢你抽出时间 因此,如果它是一个静态对象,而不是一个字符串,那么当多次调用同一个方法时,它会有问题吗 不完全是。
- 使lockObject与受保护的资源保持密切的1对1关系。在数量、范围和寿命方面。因此,使用静态锁对象来保护静态数据
- 尽可能保持lockObject的私密性,将其公开会增加死锁的风险。因此,也要避免锁定类型和字符串李>
- 使lockObject与受保护的资源保持密切的1对1关系。在数量、范围和寿命方面。因此,使用静态锁对象来保护静态数据
- 尽可能保持lockObject的私密性,将其公开会增加死锁的风险。因此,也要避免锁定类型和字符串李>
访问共享资源的所有代码都必须共享(锁定)同一个lockObject实例。私家锁坏了 是的,它们都会锁定对象的同一个实例。这是个问题吗?看来这就是你的意图。当然,对于static,每个实例都使用相同的锁(而不是不同的锁),但这是static所期望的。。。我遗漏了你的问题吗?是的,它们都会锁定对象的同一个实例。这是个问题吗?看来这就是你的意图。当然,对于static,每个实例都使用相同的锁(而不是不同的锁),但这是static所期望的。。。我遗漏了你的问题吗?如果我有一个方法将以并行方式多次调用,并且这个方法将锁定lockObject,那么是否存在线程安全问题?如果是,如何确保螺纹安全?谢谢。如果我有一个方法将以并行方式多次调用,并且这个方法将锁定lockObject,那么是否存在线程安全问题?如果是,如何确保螺纹安全?非常感谢。
private Object thisLock = new Object();
private static Object thisLock = new Object();