【发布时间】:2016-01-18 13:05:12
【问题描述】:
考虑一些 Mutex 类实现的测试用例。测试在执行期间创建了几个 std::thread 实例。如果根据测试正确实现了 Mutex 类,则所有线程都应该完成。如果出现问题,一个线程可能会无限期地阻塞。测试后如何正确清理?
一开始还想拆线,结果线泄露了。更糟糕的是,线程依赖于测试用例内部的 Mutex 实例,这会在测试用例返回后偶尔导致访问冲突。 一些线程库,例如 Qt 的 QThread 有 terminate() 方法,但我想使用 std::thread 即使 Qt 已经是我项目的依赖项。
是否存在用于测试可能无限期阻塞的并发代码的通用模式?
【问题讨论】:
标签: c++ multithreading c++14