首页
学习
活动
专区
圈层
工具
发布

读/写锁
EN

Stack Overflow用户
提问于 2009-06-08 19:18:02
回答 10查看 1.8K关注 0票数 1

作为工作项目的一部分,我用C++实现了一个读/写锁类。在将我的代码推向生产之前,我应该在我的类上运行哪种类型的测试,以确保它将正常工作。

显然,我已经在我的类上执行了一些健全性测试(确保一次只有一个编写器可以访问,确保发布和声明正确地递增和递减,等等)。

我正在寻找能够保证我的类的稳定性并防止边缘情况的测试。测试多线程代码似乎比标准代码难得多。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-06-08 19:26:55

测试多线程代码非常困难,因此您应该通过编写多线程应用程序的经验丰富的同事的详细代码审查来补充您的测试。

票数 8
EN

Stack Overflow用户

发布于 2009-06-08 19:44:23

确保你在一台真正有多个CPU的机器上进行压力测试,这通常会比在一台CPU机器上发现更多的多线程问题。

然后在64位、更快的CPU、更多的CPU等机器上测试它。

正如@onebyone.livejournal.com所说,使用具有非一致性内存缓存的机器;尽管根据NUMA article on Wikipedia的说法,这可能很难找到。

当然,在尽可能多的不同机器上使用代码不会有什么坏处,也是发现问题的好方法。

票数 3
EN

Stack Overflow用户

发布于 2009-06-08 19:33:38

我猜您可以从查看良好的代码中包含的测试开始。例如,GNU libc (nptl)的pthread实现包括读写锁和一些测试。

代码语言:javascript
复制
$ 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.c
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/966476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档