加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Index的替代原因在.Net字典中的数组的边界之外

发布时间:2020-12-15 06:51:09 所属栏目:百科 来源:网络整理
导读:我了解一个Dictionary对象的边界错误之外的Index的主要原因之一是线程冲突. (同时读写相同的字典)但是,我遇到了一个令人困惑的情况,即线程冲突不够充分. 这是情况: 我已经编写了以不安全的方式实现Dictionary的代码,用于多线程处理. 代码已经作为Web服务实
我了解一个Dictionary对象的边界错误之外的Index的主要原因之一是线程冲突. (同时读写相同的字典)但是,我遇到了一个令人困惑的情况,即线程冲突不够充分.

这是情况:
我已经编写了以不安全的方式实现Dictionary的代码,用于多线程处理.

代码已经作为Web服务实现到服务器A和服务器B的两个服务器上.通过负载平衡器访问服务器,负载平衡器将以循环方式向服务器A和B发送请求.

现在这里是棘手的部分.该错误仅显示在服务器A上,从不在服务器B上显示.根据我们的硬件团队,两台服务器是一样的.虽然线程冲突固有地是一个随机过程,但它仍然会同时影响我的服务器.我在一个服务器上看到错误的50个实例,另外一个是0.统计上不可能的是,线程冲突只发生在我的一个服务器上,而另一个运行无错误.

我已经在修改应用程序以使其线程更安全,但是在“Dictionary”对象的“插入”操作中会出现此错误的其他原因?

解决方法

Although thread collision is inherently a random process

一点也不.这是非常依赖时机的.时间可以重复,系统倾向于解决具体的模式.一个线程赛跑诊断工具,如Microsoft Research的CHESS,通过在线程的执行中注入随机延迟.使系统脱离这种模式.喜欢它本身偶尔做,但只有一个星期左右.这是随机的,只是不足够随便给你一个调试问题的镜头.

因此,看到一个服务器发生故障,而另一个服务器并不意味着什么.负载均衡器可能与之有关.你永远无法弄清楚确切的原因,因为你无法找出发生了50次的事情.这还不够

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读