我已经在C#上实现了并发循环缓冲区,现在想测试其工作。我有非常简单的API-void Write(T element)T Read()。我正在寻找一个很好的示例,说明如何测试所有可能的用例并检测所有可能的错误(包括竞争条件)。从2个线程进行简单的交替写入和读取似乎不是一个好主意,因为我们无法控制顺序来自不同线程的API调用。

最佳答案

用例之一应包括写入缓冲区(不读取缓冲区),直到缓冲区已满。

如果您的测试用例实现了从同一线程进行读取和写入,那么您可以控制读取/写入的顺序。

当多线程代码中的线程安全实现足够简单以“通过检查”进行验证(即通过代码审查(而不仅仅是通过测试))时,我会喜欢它。

10-08 08:14
查看更多