c# - MS CHESS 过时了吗?

标签 c# multithreading thread-safety

我有一个类,它使用字符串字典。一种方法是初始化字典,另一种方法是向字典添加新的对,第三种方法是将字典连接成字符串。

我想通过在不同线程中同时运行 init-adding-adding-*-adding-finalizing 方法来单元测试它是否线程安全。该类的新实例在使用前创建,字典不是静态的。所以我想确定它是否安全。

Afaik,在单元测试中测试线程并不是一个好主意。相反,我找到了一个 CHESS,它的设计目的完全相同:http://blog.decarufel.net/2009/05/how-to-test-your-multi-threaded-code.html

但是,看起来它已经过时了。关于这个领域的任何现代替代品/建议?

最佳答案

作为替代方案,您可以查看使用 ConcurrentDictionary类型,这将抽象出这些特定的多线程问题。

但是,如果你想继续使用你自己的机制(或者如果你想要一个关于如何测试多线程代码的问题的一般答案),它看起来来自this post国际象棋绝不是过时的。据我所知,自该工具首次发布以来,底层技术 - 多线程 - 根本没有改变,因此除非您在使用它时遇到特定问题,否则继续使用它是完全合理的。

关于c# - MS CHESS 过时了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552384/

相关文章:

C# 多客户端服务器应用程序的问题

c# - NHibernate.断言失败 : null identifier

c# - 如何使用 lambda 表达式创建扩展方法

C++ - 在线程之间传递数据

java - 当发布者线程数远高于消费者数时,Spring Reactor 会受益

java - 使用按钮启动和停止线程

java - 包含列表的缓存 ConcurrentHashMap 的线程安全性

c# - 返回 await Task.FromResult 或抑制警告?

java - hashmap的线程安全更新

c++11 std::hash 函数对象类线程安全