Hallo!
Ich habe einen sehr speziellen Fall bei dem ich etwas ins Schleudern komme. Ich programmiere grade für ein externes Programm ein plugin, welches als Dll geladen wird. Mein Plugin ist letztendlich nichts weiter als ein Socket-Server, der genau eine Verbindung annehmen und mit dieser kommunizieren muß.
Das externe Programm (ein physikalischer Simulator) wird über eine Skriptsprache gesteuert, durch die auch die dll geladen wird. Das Plugin wiederum kann Funktionen der umgebenden Skriptdatei (auch eigen definierte) aufrufen. Es soll nun funktionieren, dass ein Programm eine Verbindung zu meinem server-Plugin aufnimmt, ihm eine Nachrichte sendet und unbestimmte Zeit später von der Skriptsprache (also meinem Skriptsprachenprogramm) eine Antwort gesendet wird. In etwas so:
Simulator: Skript -\> lade und starte Server.dll
Skript -\> Server.dll -\> baue connection auf
Skript -\> Server.dll -\> warte auf Nachricht
...
Skript -\> Server.dll -\> sende Antwort
Leider sorgt jder blockierende Aufruf des Servers dafür, dass die GUI des Simulators komplett aussetzt, sie läuft anscheinend nicht in einem eigenen Thread. Also habe ich den Server in einem eigenen Thread gestartet über _beginthread(…). Das hat natürlich den Nachteil, dass ich von der Skriptsprache keine synchronen Aufrufe mehr an den server machen kann, da ich z.B. ein read() aufrufen kann, bevor überhaupt jemand verbunden ist.
Wie kann ich dieses Problem meistern?
Grundsätzlich kein Problem, wäre es nicht so, dass d Simulatorprogramm