Print this page
joyent/v8plus#7 v8plus should not hold the event loop open forever
@@ -182,10 +182,26 @@
extern nvlist_t *v8plus_method_call(void *, const char *, const nvlist_t *);
extern nvlist_t *v8plus_method_call_direct(void *, const char *,
const nvlist_t *);
/*
+ * These functions allow the consumer to hold the V8 event loop open for
+ * potential input from other threads. If your process blocks in another
+ * thread, e.g. an event subscription thread, you must signal to v8plus
+ * that the event loop should remain active. Calls to v8plus_eventloop_hold()
+ * and v8plus_eventloop_rele() should be balanced. It is safe to call
+ * v8plus_eventloop_rele() from outside the event loop thread.
+ *
+ * Note: Holds obtained via v8plus_obj_hold() and v8plus_jsfunc_hold() will
+ * also automatically hold the event loop, removing the need to use this
+ * interface explicitly.
+ */
+extern void v8plus_eventloop_hold(void);
+extern void v8plus_eventloop_rele(void);
+extern void v8plus_eventloop_rele_direct(void);
+
+/*
* These methods are analogous to strerror(3c) and similar functions; they
* translate among error names, codes, and default messages. There is
* normally little need for these functions in C methods, as everything
* necessary to construct a JavaScript exception is done by v8+, but these
* may be useful in the construction of supplementary exception decorations