我有函数 f;我想在启动 f 后抛出异常 1s。我无法修改 f()。有可能用c ++做到吗?
try {
f();
}
catch (TimeoutException& e) {
//timeout
}
原文由 Newbie 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
您可以创建一个单独的线程来运行调用本身,并在主线程中等待一个条件变量,一旦它返回,将由调用
f
的线程发出信号。诀窍是在 1s 超时的情况下等待条件变量,这样如果调用花费的时间比超时时间长,你仍然会醒来,知道它,并能够抛出异常——所有这些都在主线程中。这是代码( 这里 是现场演示):