<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Nach Ende eines Nebenthreads Funktion vom Haupthread ausführen lassen]]></title><description><![CDATA[<p>Moin!</p>
<p>Ich habe ein kleines problem mit Qt.<br />
Und zwar lässt sich das GUI von Qt nur durch den erstellenden Thread bearbeiten (Elemente hinzufügen etc).<br />
Es ist aber so das ich ein paar Threads benutze die z.B. Aktualisierungen in zeitintervallen durchführen sollen. Diese Threads können nur Inhalte ändern, sobald sie elemente hinzufügen wollen stürzt das Programm ab, mit einer Qt Meldung, das nur der Hauptthread am GUI arbeiten kann/darf.</p>
<p>Was ich jetzt also bräuchte wäre ein Konstrukt, dass es mir ermöglicht von einem Nebenthread aus dem Hauptthread eine aufgabe zu geben, dem Nebenthread schlafen zu legen bis der Haupthread die GUI arbeit abgeschlossen hat, und dann wieder den Nebenthread laufen zu lassen.</p>
<p>Oder:</p>
<p>Nachdem der Nebenthread beendet wurde, irgendwie dem Hauptthread etwas ausführen lassen. Sprich mit dem Nebenthread nur ein Refresh flag zu setzen.<br />
Leider weiß ich nicht wie ich einem HauptThread der einen NebenThread erstellt sagen soll das er etwas ausführen soll, wenn der Nebenthread beendet wurde.</p>
<p>Bei mir ist es aktuell so:<br />
Thread1: Signal -&gt; Slot(Ruft Thread) -&gt; geht wieder in qt routinen über die ich nicht einsehen kann.<br />
Thread2: Start -&gt; macht was -&gt; ende.</p>
<p>Am ende von Thread2 passiert dann einfach gar nichts bis irgendwie ein Signal in Thread 1 gesetzt wird. Wenn ich also ein Refresh Flag setze, wird es erst angewand wenn irgendein neues Signal kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/333633/nach-ende-eines-nebenthreads-funktion-vom-haupthread-ausführen-lassen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 18:29:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/333633.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Jul 2015 05:24:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nach Ende eines Nebenthreads Funktion vom Haupthread ausführen lassen on Mon, 20 Jul 2015 05:24:58 GMT]]></title><description><![CDATA[<p>Moin!</p>
<p>Ich habe ein kleines problem mit Qt.<br />
Und zwar lässt sich das GUI von Qt nur durch den erstellenden Thread bearbeiten (Elemente hinzufügen etc).<br />
Es ist aber so das ich ein paar Threads benutze die z.B. Aktualisierungen in zeitintervallen durchführen sollen. Diese Threads können nur Inhalte ändern, sobald sie elemente hinzufügen wollen stürzt das Programm ab, mit einer Qt Meldung, das nur der Hauptthread am GUI arbeiten kann/darf.</p>
<p>Was ich jetzt also bräuchte wäre ein Konstrukt, dass es mir ermöglicht von einem Nebenthread aus dem Hauptthread eine aufgabe zu geben, dem Nebenthread schlafen zu legen bis der Haupthread die GUI arbeit abgeschlossen hat, und dann wieder den Nebenthread laufen zu lassen.</p>
<p>Oder:</p>
<p>Nachdem der Nebenthread beendet wurde, irgendwie dem Hauptthread etwas ausführen lassen. Sprich mit dem Nebenthread nur ein Refresh flag zu setzen.<br />
Leider weiß ich nicht wie ich einem HauptThread der einen NebenThread erstellt sagen soll das er etwas ausführen soll, wenn der Nebenthread beendet wurde.</p>
<p>Bei mir ist es aktuell so:<br />
Thread1: Signal -&gt; Slot(Ruft Thread) -&gt; geht wieder in qt routinen über die ich nicht einsehen kann.<br />
Thread2: Start -&gt; macht was -&gt; ende.</p>
<p>Am ende von Thread2 passiert dann einfach gar nichts bis irgendwie ein Signal in Thread 1 gesetzt wird. Wenn ich also ein Refresh Flag setze, wird es erst angewand wenn irgendein neues Signal kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2460351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2460351</guid><dc:creator><![CDATA[cl90]]></dc:creator><pubDate>Mon, 20 Jul 2015 05:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Ende eines Nebenthreads Funktion vom Haupthread ausführen lassen on Mon, 20 Jul 2015 11:07:43 GMT]]></title><description><![CDATA[<p>Es gibt in Qt zwei Möglichkeiten, dass zu machen.</p>
<p>1. Du pushed die GUI-Arbeit in den Hauptthread, dass machst Du in dem Du eine Funktion in die Event queue from GUI-Thread pushed. Die Lösung geht mit QThreads und mit STL-Threads. siehe: <a href="http://doc.qt.io/qt-4.8/threads-qobject.html" rel="nofollow">http://doc.qt.io/qt-4.8/threads-qobject.html</a></p>
<p>Das was du brauchst ist dann die Queued Connection. Qt's Signal/Slot Prinzip.<br />
Du brauchst dann ein Signal, dass einen Slot vom Typ Queued Connection triggered, die Slot-Funktion wird dann in der Event Queue vom GUI-Thread abgelegt und bei der nächsten Gelegenheit ausgeführt.<br />
Das bringt Dir natürlich nur etwas, wenn die Arbeit die der GUI-Thread machen soll so schnell von der Hand geht, dass das GUI nicht einfriert.</p>
<p>2. Du nutzt die Model / Views und benutzt dafür eine weitere Abstraktionsebene und sicherst dann die Model Zugriffe mit mutexen oder machst atomare Zugriffe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2460362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2460362</guid><dc:creator><![CDATA[Ruvi]]></dc:creator><pubDate>Mon, 20 Jul 2015 11:07:43 GMT</pubDate></item><item><title><![CDATA[Reply to Nach Ende eines Nebenthreads Funktion vom Haupthread ausführen lassen on Mon, 20 Jul 2015 11:03:49 GMT]]></title><description><![CDATA[<p>Alles klar.</p>
<p>ich versuche mich aktuell an der QThread lösung mit den Signals und Slots.<br />
Scheint zu funktionieren.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2460399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2460399</guid><dc:creator><![CDATA[cl90]]></dc:creator><pubDate>Mon, 20 Jul 2015 11:03:49 GMT</pubDate></item></channel></rss>