Lock的使用注意事项
Lock 相当于Monitor.Enter 检查变量是否被lock, 有就等待,没有就可以执行代码
lock的锁对象要求为一个引用类型。它可以锁定值类型,但值类型会被装箱,每次装箱后的对象都不一样,会导致锁定无效。
对于lock锁,锁定的这个对象参数才是关键,这个参数的同步索引块指针会指向一个真正的锁(同步块),这个锁(同步块)会被复用。
lock(this) 表示锁定当前实例,其他代码中使用该实例时,会发现实例被锁定。
lock字符串也是不可取的。C#中的字符串都是被保存在字符串池中的,如果当前程序中有两个不同的string变量有相同的值,那么这两个变量会同时被lock.
标准的锁的声明如下所示:
在当前类内部声明 private static readonly object lock = new object();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!