AsyncSocket und Threads/RunLoops

  • AsyncSocket und Threads/RunLoops

    Hallo zusammen,

    Ich verwende die (OpenSource)-"AsyncSocket"-Klasse/Framework für das Handling von TCP/IP-Aktionen.
    Mein Problem:
    Sobald der User aktiv wird und Menüs aufruft oder File Dialoge offen sind, wird der TCP/IP Stream unterbrochen/angehalten, was für meine Anwendung leider nicht akzeptabel ist.
    Von daher würde ich gerne das Stream-Handling in einem separaten Thread/RunLoop laufen lassen, damit die User-Interaktion vom Rest getrennt ist. Leider fehlt mir hier überhaupt der Ansatz und im Netz habe ich auch noch keine hilfreichen Informationen gefunden. Ich bin mir unsicher an welchem Punkt ich den separten Thread/Runloop lostreten muss, um den gewünschten Effekt zu erreichen.

    Ich habe mal mein abgespecktes Projekt angehängt.

    Über Hinweise und Tips, wo und wie ich am besten den Runloop einbauen kann wäre ich sehr dankbar und würde mich über Antworten sehr freuen.

    Besten Gruß.
  • Das Problem dürfte darin liegen, dass AsyncSocket so wie die Cocoa-Klassen über die Run-Loop Daten entgegen nehmen. Wenn du ein Menü öffnest, wechselt die RL ihren Mode. Es werden dann nur noch wenige Events entegegen genommen (etwa keine Timer-Events). Lässt es das Framework zu, dass es im Common-Mode läuft?

    Alterbativ machst du dir einen neuen Thread und "fügst" diesem eine RL "hinzu". Dazu gibt es Samples in der Doku.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Das Problem dürfte darin liegen, dass AsyncSocket so wie die Cocoa-Klassen über die Run-Loop Daten entgegen nehmen. Wenn du ein Menü öffnest, wechselt die RL ihren Mode. Es werden dann nur noch wenige Events entegegen genommen (etwa keine Timer-Events). Lässt es das Framework zu, dass es im Common-Mode läuft?
    Dazu habe ich bisher noch keine Informationen gefunden und bin bezüglich Threads/Runloops aber auch noch ziemlich wackelig auf den Beinen. Von daher wüsste ich auch nicht, inwiefern ich diese Info über den Common-Mode in die Tat umsetzen sollte...

    Amin Negm-Awad schrieb:

    Alterbativ machst du dir einen neuen Thread und "fügst" diesem eine RL "hinzu". Dazu gibt es Samples in der Doku.
    Das würde ich am besten im awakeFromNIB einbauen, oder? Hast du da einen direkten Link zu den Samples?

    Vielen Dank für die Tips.