Qjsengine Skript -Funktion (Slot), die nicht im Thread der Engine ausgeführt werdenC++

Programme in C++. Entwicklerforum
Anonymous
 Qjsengine Skript -Funktion (Slot), die nicht im Thread der Engine ausgeführt werden

Post by Anonymous »

[Qt 6.5.3 mit Visual Studio 2019] < /p>
Ich verwende einen Qjsengine in einem Worker -Thread. Einige Objekte meiner Anwendung sind über das Skript aus zugegriffen. Einige von ihnen leben in einem anderen Faden, z. Objekte umgehen Netzwerkkommunikation.
Ich möchte Signale dieser Objekte mit Skriptfunktionen verbinden. Die Verbindung funktioniert, aber die Skriptfunktion wird im Anrufer -Thread anstelle des Threads der Engine ausgeführt. Dies führt zu Abstürzen, wenn gleichzeitig der Motor andere Dinge in seinem eigenen Thread tut. (Qjsengine Nicht -Thread -Safe.) < /P>
Ich habe versucht, ein Kontextobjekt an Connect () zu übergeben, das den richtigen Thread angibt, es hat jedoch keinen Effekt. Der Thread wird nur umgeschaltet, wenn der Steckplatz eine reale C ++-Objektfunktion ist.
minimal Hauptfaden). Der Thread -Auslauf -Methode instanziiert ein QJSengine, veröffentlicht den QTimer in der Engine und führt ein kurzes Skript aus, das das Zeitüberschreitungssignal des Timers an eine Skriptfunktion verbindet. Problem: Die Skriptfunktion wird im Timer -Thread ausgeführt (= Hauptfache). < /P>
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);

JsThread t;
t.start();

return a.exec();
}
< /code>
class TestObj : public QObject {
Q_OBJECT;

public:
Q_INVOKABLE void callcpp() {
qDebug()
Does anyone know how to force the JS code to be executed in the engine's thread?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post