C++ 在v8中检测无限递归

C++ 在v8中检测无限递归,c++,v8,embedded-v8,C++,V8,Embedded V8,我正在使用google的v8 javascript引擎在我的项目中安装一个嵌入式js解释器,它必须能够执行用户提供的代码,但我想知道是否有可能在调用任何用户代码之前设置一些东西,以确保如果代码试图无限期地递归(或者即使执行时间太长),它可以以某种方式中止,抛出一个未捕获的异常,并将问题报告给调用方 谢谢大家到目前为止的回复。。。是的,在我发布这篇文章后不久,我意识到我基本上是在寻求某种解决停顿问题的方法,我知道这是无法解决的,实际上远远超过了我真正需要的 我需要的是一种机制,用于检测在v8环境中

我正在使用google的v8 javascript引擎在我的项目中安装一个嵌入式js解释器,它必须能够执行用户提供的代码,但我想知道是否有可能在调用任何用户代码之前设置一些东西,以确保如果代码试图无限期地递归(或者即使执行时间太长),它可以以某种方式中止,抛出一个未捕获的异常,并将问题报告给调用方

谢谢大家到目前为止的回复。。。是的,在我发布这篇文章后不久,我意识到我基本上是在寻求某种解决停顿问题的方法,我知道这是无法解决的,实际上远远超过了我真正需要的


我需要的是一种机制,用于检测在v8环境中运行的东西何时足够快地返回,或者只是一种机制,用于检测递归是否正在发生。。。我的用例是这样的,最终用户无论如何都不应该使用任何递归,如果我甚至可以检测到,那么我可以在那时拒绝它,而不是盲目地执行它。但是,对于不同的线程,不同的隔离可以同时调用相同的函数,所以我不能只使用静态局部变量来锁定对相同函数的另一个调用。

编译器[V8在这种情况下肯定是编译器,即使它“不总是”编译器]可以检测递归,但是如果代码足够聪明(例如,取决于编译时未知的变量),就不可能检测它是否具有无限递归或有限递归


我只想声明“不允许在X秒内执行”,如果执行时间超过该时间,请中止它。您可以通过拥有一个“看门狗线程”来实现这一点,该线程在代码完成时被触发——如果看门狗线程运行X秒,则杀死主线程并向用户代码报告。不,我不知道如何将此代码与V8结合使用。

那么您想解决停止问题吗?