This article covers features introduced in SpiderMonkey 31
JSInterruptCallback JS_SetInterruptCallback(JSRuntime *rt, JSInterruptCallback callback); JSInterruptCallback JS_GetInterruptCallback(JSRuntime *rt); void JS_RequestInterruptCallback(JSRuntime *rt);
||The callback function to install.|
bool (* JSInterruptCallback)(JSContext *cx);
Pointer to a
Provides request. In
These functions allow setting an interrupt callback that will be called from the JS thread some time after any thread triggered the callback using
To schedule the GC and for other activities the engine internally triggers interrupt callbacks. The embedding should thus not rely on callbacks being triggered through the external API only.
Important note: Additional callbacks can occur inside the callback handler if it re-enters the JS engine. The embedding must ensure that the callback is disconnected before attempting such re-entry.
JS_SetInterruptCallback sets a callback that can be called asynchronously. Some common uses for an interrupt callback are:
- To run garbage collection periodically, by calling
- To periodically take a break from script execution to update the UI (though note that Mozilla does not do this, by design);
- To enforce application limits on the amount of time a script may run. (In this case, the callback may terminate the script by returning
JS_GetInterruptCallback returns the currently installed interrupt callback, or
NULL if none is currently installed.
JS_RequestInterruptCallback requests a callback set using