C# 确定代码在.net中是否是线程安全的度量是什么
如何衡量代码是否是线程安全的 可能是一般准则或最佳实践C# 确定代码在.net中是否是线程安全的度量是什么,c#,.net,multithreading,thread-safety,C#,.net,Multithreading,Thread Safety,如何衡量代码是否是线程安全的 可能是一般准则或最佳实践 我知道线程安全的代码是跨线程工作而不做不可预知的行为,但这有时会变得非常棘手和困难 我提出了一个简单的规则,它可能很难实现,因此本质上是理论性的。如果您可以将一些Sleep操作注入代码中的某些位置,从而显著地更改代码的结果,那么代码就不是线程安全的。否则代码是线程安全的(不存在可以更改代码执行结果的延迟组合) 在考虑线程安全时,不仅要考虑代码,还要考虑代码的其他部分、框架、操作系统、外部因素,如磁盘驱动器和内存。。。每件事这就是为什么这个“
我知道线程安全的代码是跨线程工作而不做不可预知的行为,但这有时会变得非常棘手和困难 我提出了一个简单的规则,它可能很难实现,因此本质上是理论性的。如果您可以将一些
Sleep
操作注入代码中的某些位置,从而显著地更改代码的结果,那么代码就不是线程安全的。否则代码是线程安全的(不存在可以更改代码执行结果的延迟组合)
在考虑线程安全时,不仅要考虑代码,还要考虑代码的其他部分、框架、操作系统、外部因素,如磁盘驱动器和内存。。。每件事这就是为什么这个“经验法则”主要是理论性的。我认为最好的答案是在这里 ,在写这个问题之前,我不可能注意到这样的答案 我认为最好是关闭它! 谢谢
按280Z28编辑(因为我无法为封闭式问题添加新答案) 一个算法或应用程序的线程安全性通常是根据在多个执行线程(或分布式系统的多个进程)存在时保证遵循的线程安全性来衡量的。需要检查的两件最重要的事情如下
是我的错,我在这里搜索时发现了这样一个问题!建议的“重复”是一个完全不同的问题。如果重新打开此问题,我可以发布此问题的真实答案。我继续编辑了下面的一个答案,以回答如何测量代码的线程安全性的具体问题。你是我的英雄:D如果他们打开此问题,请在单独的答案中添加,我将其标记为我问题的答案,谢谢“线程安全”这并不意味着只有一种结果是可能的。例如,线程安全加密随机数生成器的结果肯定会受到算法中引入睡眠操作的影响。@280Z28确实如此,这就是我写“以一种重要的方式”的原因。这是一个经过深思熟虑的总括术语,对我很有用。“重大”的含义因情况而异。我认为,当您只想测试代码的线程安全性时,生成一个随机数而不是另一个随机数并不重要。