作为工作项目的一部分,我用C++实现了一个读/写锁类。在将我的代码推向生产之前,我应该在我的类上运行哪种类型的测试,以确保它将正常工作。
显然,我已经在我的类上执行了一些健全性测试(确保一次只有一个编写器可以访问,确保发布和声明正确地递增和递减,等等)。
我正在寻找能够保证我的类的稳定性并防止边缘情况的测试。测试多线程代码似乎比标准代码难得多。
发布于 2009-06-08 19:26:55
测试多线程代码非常困难,因此您应该通过编写多线程应用程序的经验丰富的同事的详细代码审查来补充您的测试。
发布于 2009-06-08 19:44:23
确保你在一台真正有多个CPU的机器上进行压力测试,这通常会比在一台CPU机器上发现更多的多线程问题。
然后在64位、更快的CPU、更多的CPU等机器上测试它。
正如@onebyone.livejournal.com所说,使用具有非一致性内存缓存的机器;尽管根据NUMA article on Wikipedia的说法,这可能很难找到。
当然,在尽可能多的不同机器上使用代码不会有什么坏处,也是发现问题的好方法。
发布于 2009-06-08 19:33:38
我猜您可以从查看良好的代码中包含的测试开始。例如,GNU libc (nptl)的pthread实现包括读写锁和一些测试。
$ ls nptl/tst-rwlock*
nptl/tst-rwlock1.c
nptl/tst-rwlock10.c
nptl/tst-rwlock11.c
nptl/tst-rwlock12.c
nptl/tst-rwlock13.c
nptl/tst-rwlock14.c
nptl/tst-rwlock2.c
nptl/tst-rwlock3.c
nptl/tst-rwlock4.c
nptl/tst-rwlock5.c
nptl/tst-rwlock6.c
nptl/tst-rwlock7.c
nptl/tst-rwlock8.c
nptl/tst-rwlock9.chttps://stackoverflow.com/questions/966476
复制相似问题