【发布时间】:2017-03-13 18:54:02
【问题描述】:
假设我们有一段代码,我们只是不能修改它,但我们想破坏它,当它运行时间过长(x 毫秒)时退出这段代码
伪代码
Throw exception after (500ms) {
auto result = Do some risky job, for example test string by regex with catastrophic backtracking risk.
}
catch ( Exception e ) {
//...
}
每件事都必须在同一个线程中。
是否可以使用 c++11 或其他标准?
【问题讨论】:
-
操作系统重要吗 - 例如,Linux 上的 SIG_ALARM 肯定会允许这样做#
-
@UKMonkey:这是针对 FreeBSD 下的 node.js 插件的。但我想每个信息都会有所帮助。
-
最简单的方法是在单独的线程上实际运行有风险的业务。然后,您使用en.cppreference.com/w/cpp/thread/future/wait_for 在
std::future中等待结果。 -
@StoryTeller 这是最后一种方式。我希望它不是异步的
-
它怎么比一个神奇地让你抛出异常的随机信号更异步?
标签: c++ regex c++11 thread-safety boost-regex