我有一些例程可以对stdio流进行多次写入以生成单个日志消息。为了使每条消息保持独立,即使在多线程应用程序中,我也会通过调用flockfile()和funlockfile()来组合每条消息。在我的单元测试中,我想检查一下锁是否悬空,但我该怎么说?
我想过做一个ftrylockfile(),但锁是递归的,如果我从与初始flockfile()相同的线程中执行它,它就会成功。在引擎盖下有一个锁定计数,但我看不到它的读取,或检查它的zeroness。
答案 0 :(得分:3)
由于您是在单元测试中执行此操作,因此请模拟flockfile()
和funlockfile()
。在您的模拟中,您可以跟踪计数并在完成时验证它是零。