【发布时间】:2015-10-12 19:28:26
【问题描述】:
如何为多线程生产者-消费者 C 程序编写好的测试?
我知道 GDB 可用于调试线程,但我相信 GDB 也会停止当前正在调试的线程,而其他线程继续运行。
我想通过我的线程测试正确的互斥锁运气/解锁和阻塞。我环顾四周,但找不到任何好的资源。
我对所有非并发功能进行了单元测试,但想确保我的并发是正确的。如何做到这一点?
【问题讨论】:
-
我不相信存在一些通用的解决方案。一般来说,您应该对单线程代码执行相同的操作,即测试所有组合。如果您发布具体的小示例,可能会找到特定案例的答案
-
据我所知,测试并发性非常棘手,尤其是在运行在千兆赫兹区域的现代系统上。特别是对于任何小的东西,如果您尝试首先证明算法的正确性然后编写代码,则相对容易。我会第二个 @Lol4t0,因为不太可能有一个通用的解决方案。
-
@tonysdg,我相信研究算法的正确性是第一步,但您还必须检查您的实现是否与您开发的算法一致。
标签: c multithreading testing gdb