Vielen dank erstmal für die guten Rückmeldungen.
Da hast du natürlich vollkommen Recht, dieser Fehler ist erst beim erstellen dieses "Minimalbeispiels" entstanden, da ich dort alle Schleifen möglichst zusammenfassen wollte. Trotzdem danke für den Hinweis.Es dünkt mich übrigens, dass dein Beispielprogramm kein besonders gelungenes Beispiel für Nebenläufigkeit ist, weil du direkt nach dem Starten jedes einzelnen Threads auf dessen Ende wartest
Das ist quasi die Variante, die ich erwartet hatte. Für die Threadsicherheit würde es doch genügen, einfach in dem Slot am Anfang einen Mutex zu sperren oder?Erreicht wird das durch Angabe von Qt:irectConnection als fünften Parameter von conenct().
Logischerweise obliegt es dann dem Applikationscode die Threadsicherheit zu gewährleisten.
Kannst du das vielleicht noch etwas genauer erklären? Wo müsste in dem Beispiel der exec-Aufruf erfolgen?Bei der zweiten Möglichkeit (normales connect() oder Angabe von Qt::QueuedConnection als fünften Parameter) werden die Argumente des Signals mittels Event an das Empfängerobjekt geschickt, der Aufruf des Slots erfolgt damit im Zielthread.
Die Vorraussetzung dafür ist das Laufen der Eventverarbeitung im Zielthread. Im Falle des Hauptthreads ist das üblicherweise durch app.exec() gewährleistet (was in deinem Fall fehlt).
Da hast du wohl recht, ich weiß gerade aber auch nicht mehr ganz genau wie ich auf die Idee kam, dass das nicht funktionieren würde.Funktioniert bei mir einwandfrei wenn ich qDebug() durch cout ersetze und << endl am Ende der Zeile hinzufüge.
Lesezeichen