【发布时间】:2013-11-23 01:33:37
【问题描述】:
我需要一个超时函数调用。我主要使用 Qt(4.7.3、4.8.5),所以我试图用 Qt 找到解决方案。 QFuture 和 QtConcurrent 这两个类似乎完成了我需要的 99%,但我找不到使函数调用超时的可能性。
我的问题: 我有我的测试仪(gtest)并且我测试了一个可以以无限循环结束的函数=>所以我想测试它来解决这个问题(这个函数是内部极端复杂的:-()。我想添加如果存在无限循环,则超时时间中断 => 所以我可以告诉测试人员有问题(无限循环),我将终止线程。
我正在寻找类似的东西:
QtConcurrent::run(............,30000 /*30 seconds timeout)*/;
有人知道我该怎么做吗? (如果可以使用原生 C++,或者 boost,或者......你也可以告诉我你的解决方案)
【问题讨论】:
-
你需要使用
QtConcurrent吗?否则,我将创建一个QThread子类,在其run方法中调用该函数,并在超时时使用wait。如果线程卡住了,您甚至可以terminate线程,但请谨慎使用! (见文档) -
@Laszlo 你有没有找到类似 QtConcurrent::run(............,30000 /*30 seconds timeout)*/;正在寻找相同的东西。
-
@Dhanesh:你问错人了。 :)
-
哎呀...想问这个给 tonka... :(