Ich erstelle ein Knoten C++ Addon, das eine js Funktion zurückrufen soll, da Ereignisse von einem anderen Thread ausgelöst werden, der nicht unter meiner Kontrolle ist (es ist tatsächlich ein .net-Thread von einer verwalteten DLL, die ich verwende). Da die JS-Welt single-threaded ist, kann ich nicht einfach die js-Funktionsreferenz beibehalten und sie von diesem Nicht-js-Thread aus aufrufen. Ich kann nicht einmal die Parameter erstellen, die ich an diese Callback-Funktion in diesem Thread weitergeben möchte.Node.js C++ - Addon: Mehrere Callbacks von verschiedenen Thread
Ich habe gesehen, uv_queue_work
in Fällen, in denen Sie Arbeit aus dem js-Thread verschieben und einmal beendet und aus dem js-Thread aufgerufen werden, um alles, was Sie tun müssen, wie z. Zurückrufen einer js-Funktion.
Für den späteren Gebrauch auf, dann ist hier, dass die Unterzeichnung der Funktion:
int uv_queue_work(uv_loop_t* loop, uv_work_t* req, uv_work_cb work_cb,
uv_after_work_cb after_work_cb);
uv_queue_work Aufruf für einmalige Aufträge in Ordnung ist, und ich konnte es mir wahrscheinlich durch beliebig oft bekommen anrufen Anrufe uv_queue_work
von after_work_cb
verketten, während work_cb
synchronisiert mit diesem anderen Thread, aber ich frage mich, ob es keinen einfacheren Weg gibt, es zu tun.
Wie eine von node.js bereitgestellte fn, die direkt von einem anderen Thread mit einem fn-Zeiger aufgerufen werden könnte, der auf Code zeigt, der beim nächsten Mal auf dem js-Hauptthread ausgeführt wird. Irgendeine Idee?
Spot- auf! Genau das, was ich brauche. –