当前位置: 首页 > 编程语言 > C#

用私有变量锁定c#share

时间:2023-04-11 02:23:32 C#

Lockingc#withprivatevariablesAccordingtoEricGunnerson)“是什么原因??是什么原因??因为任何非私有的东西都意味着要在外部使用来锁定其他人或一些你无法控制的代码,从而导致死锁。最佳实践是像这样锁定私有静态变量:privatestaticobject_syncRoot=newobject();然后:lock(_syncRoot){...}私有实例变量也可能很危险,因为该类的实例不是您的某个类拥有的实现者。它是拥有该实例的类的使用者。在发布新问题之前,您应该真正搜索旧问题。锁DarinDimitrov说私有变量锁是危险的也是错误的。私有变量上的锁用于同步类的特定实例的资源。它可能发生在你身边//一个监听多个服务器的客户端publicclassClient{privatestaticobjectlogSync=newobject();privatereadonlyDictionaryservers=newDictionary();//....一些初始化代码...//配置一个服务器。publicvoidDispose(stringserverName){//这里需要的锁在私有变量上。这个目的不能通过对私有静态对象的//锁定来实现。好吧,你可以实现目的,但是当你这样做时你将阻止//所有Client实例,这是没有意义的。//还要注意服务是只读的,这很方便//因为这是我们锁定的对象。锁总是在同一个对象上//没有必要为锁创建不必要的对象。lock(services){//...在这里做一些清理工作...Serverserver;if(servers.TryGetValue(serverName,outserver)){server.Dispose();服务器。删除(服务器名称);}}}//在某些必须记录的消息上publicvoidOnMessage(stringmessage,Serverserver){//这确保所有客户端都登录到同一个接收器并且//消息按照接收锁(logSync)的顺序处理{Log(evt);}}}以上是C#学习教程:使用私有变量锁定c#共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: