2017-03-16 4 views
0

Also schreibe ich eine Reihe von Lua-Skripten, die alle nebeneinander laufen und zusammenarbeiten. Ich habe eine Reihe von ihnen so codiert, dass sie Dateien bearbeiten können, ohne die anderen Skripte zu stören, die auch Dateien bearbeiten. Jedes Skript wird als eigene Lua-Instanz ausgeführt, und alle Skripts werden gleichzeitig ausgeführt.Machen mehrere Lua-Skripte die gleiche Variablentabelle?

Allerdings habe ich eine Reihe von ihnen, die die gleiche Variable Tabelle teilen müssen. Wenn also der Tabelleneintrag c[1] geändert wird, wird er bei jedem anderen Programm gleichzeitig geändert.

Jetzt weiß ich, dass ich eine Datei oder eine Tabelle haben könnte, die die Dateien prüfen, bevor sie irgendetwas tun, das die Variablen einschließt, und ich weiß, wie man das macht, aber ich möchte wissen, ob ich mehrere Programme zwingen kann Tabelle, ohne für jedes einzelne ein Update auslösen zu müssen.

Auch muss ich erwähnen, dass ich nicht einfach zusätzliche Bibliotheken verwenden kann. Sofern Sie keine Möglichkeit kennen, zusätzliche Bibliotheken mit einer vorkompilierten Binärdatei zu verwenden, kann ich nur die normale Lua-Bibliothek und die Socket-Bibliothek verwenden. Für meine Zwecke muss der Code vollständig portabel sein und auf jedem Windows-Computer ausgeführt werden können, an den ich mein Flash-Laufwerk anschließe.

+0

Werden diese Skripts in derselben Lua-VM oder in separaten Instanzen ausgeführt? – Vlad

+0

Ich dachte, dass es implizierte, dass sie getrennte Instanzen waren, da sie nebeneinander liefen. Ich werde die Frage aktualisieren. –

Antwort

0

Nun, weil sie verschiedene Instanzen sind, können Sie nicht so interagieren. Es gibt jedoch eine Lösung. Lua Lanes: https://github.com/LuaLanes/lanes kann verwendet werden, um mehrere Lua-Threads zu haben, die unabhängig voneinander ausgeführt werden können, und es bietet Linda-Objekte an, die die gemeinsame Nutzung von Daten ermöglichen.

+0

Bearbeitete Frage. –

+0

@Das Elementar der Schöpfung Nun, wenn Sie die Socket-Bibliothek verwenden, ist es ein bisschen chaotisch, aber Sie können jede Instanz einen Server-Socket und einen Client-Socket verwenden. Auf diese Weise können Sie Daten zu und von jeder Instanz senden. Damit dies funktioniert, müssten Sie Ihre Tabelle sterilisieren und die Zeichenfolgedaten senden. Aber wenn Ihr Betriebssystem Windows ist, können Sie eine vorkompilierte Binärdatei mit zusätzlichen Bibliotheken haben. Lass mich dein Setup wissen und ich werde dir dabei helfen. –

+0

Vielleicht könntest du etwas genauer sein, wenn du nach meinem Setup fragst. Ich werde dir mit den Informationen antworten, die ich denke, dass du fragst, aber wenn du mehr brauchst, wirst du genauer sein müssen. Meine Vermutung ist, dass Sie fragen, was mein Betriebssystem ist (Windows 7) und welche Version von Lua ich verwende? Ich benutze 5.1. (2?). Ich bin mir nicht sicher über die letzte Ziffer, aber ich weiß, dass die ersten beiden richtig sind. Ich habe eine vorkompilierte Lua Socket-Binärdatei von ihrer Site. –

Verwandte Themen