<?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[Unendliche Loops abbrechen ?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe einen fremden Code der leider ab und zu einen unendlichen Loop<br />
zusammenbastelt, sodass er aus der von mir aufgerufenen Funktion nicht<br />
mehr zurückkehrt.</p>
<p>Sagen mir mal der fremde Code sieht irgendwie so aus:</p>
<pre><code>while(1==1){Sleep(10);}
</code></pre>
<p>Ich suche nun nach einer Methode eine Funktion mit einem Timeout aufzurufen,<br />
sodass ich nach z.B. 1 Sekunde zurückkehre.<br />
In erster Linie wollt ich einen Thread starten, der mir das irgendwie tun<br />
sollte, aber eine Thread Erzeugung dauert in meinem Fall zu lange, es muss<br />
also schnell sein. (natürlich bis auf einen Fehlerfall, da bricht es eh ab)</p>
<p>Kenn jemand solche Methoden ? Unter was für Oberbegriffe muss man hier suchen ?</p>
<p>Ungefähr so stelle ich mir das vor:</p>
<pre><code>DieTimeoutFunktion(DummeLoopFunktion(parameter),meineAbbruchzeit);
</code></pre>
<p>Ich denke da and die overlapped Funktionen aus den ComPort Bereich ...</p>
<p>Gruss<br />
thenoname</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187568/unendliche-loops-abbrechen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 17:41:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187568.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Jul 2007 09:07:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unendliche Loops abbrechen ? on Sat, 21 Jul 2007 09:11:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe einen fremden Code der leider ab und zu einen unendlichen Loop<br />
zusammenbastelt, sodass er aus der von mir aufgerufenen Funktion nicht<br />
mehr zurückkehrt.</p>
<p>Sagen mir mal der fremde Code sieht irgendwie so aus:</p>
<pre><code>while(1==1){Sleep(10);}
</code></pre>
<p>Ich suche nun nach einer Methode eine Funktion mit einem Timeout aufzurufen,<br />
sodass ich nach z.B. 1 Sekunde zurückkehre.<br />
In erster Linie wollt ich einen Thread starten, der mir das irgendwie tun<br />
sollte, aber eine Thread Erzeugung dauert in meinem Fall zu lange, es muss<br />
also schnell sein. (natürlich bis auf einen Fehlerfall, da bricht es eh ab)</p>
<p>Kenn jemand solche Methoden ? Unter was für Oberbegriffe muss man hier suchen ?</p>
<p>Ungefähr so stelle ich mir das vor:</p>
<pre><code>DieTimeoutFunktion(DummeLoopFunktion(parameter),meineAbbruchzeit);
</code></pre>
<p>Ich denke da and die overlapped Funktionen aus den ComPort Bereich ...</p>
<p>Gruss<br />
thenoname</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329626</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Sat, 21 Jul 2007 09:11:06 GMT</pubDate></item><item><title><![CDATA[Reply to Unendliche Loops abbrechen ? on Sat, 21 Jul 2007 09:17:06 GMT]]></title><description><![CDATA[<p>also du sagst, thread erstellen dauert zu lange? dann läuft die funktion aber wirklich nicht lange, oder?</p>
<p>Auf alle Fälle geht das glaub ich nur mit threads, ob nu im hintergrund oder du machst es selber. Ich würd folgendes vorschlagen:</p>
<p>Erstelle einen Thread, der meldet dann dem hauptprogramm, dass er jetzt fertig initialisiert ist. Das Hauptprogramm setzt ein Flag und der Thread startet die DummeLoopFunktion(), und beendet sich dann. Wenn der Thread dann aber nach 1s oder so nicht beednet ist, kann das Hauptorgramm ihn mit tmerinateThread oder sowas beenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329630</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 21 Jul 2007 09:17:06 GMT</pubDate></item><item><title><![CDATA[Reply to Unendliche Loops abbrechen ? on Sat, 21 Jul 2007 09:22:04 GMT]]></title><description><![CDATA[<p>Ja, leider dauert es extrem lange, bis ein Thread anfängt.<br />
Wenn du 50 mal pro Sekunde die &quot;DummeLoopFunktion&quot; brauchst, ist es ein absolutes Unding.</p>
<p>Bei Threads hab ich auch das Problem, das ich mich mit den Parametern in einer<br />
falschen (ich hoffe ich schreibe es richtig) Instanz befinde und diese z.B. in einer<br />
mehrfach aufgerufenen DLL den Bezug zum Rest des Speichers verlieren.<br />
(hmmm, hoffe das versteht jemand ...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329632</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Sat, 21 Jul 2007 09:22:04 GMT</pubDate></item><item><title><![CDATA[Reply to Unendliche Loops abbrechen ? on Sat, 21 Jul 2007 09:37:58 GMT]]></title><description><![CDATA[<p>aber ohne threads geht es definitiv nicht. Ob du nu davon was mitbekommst is ne andere sache. Ein PC kann nciht mehrere Aufruf-Stränge in einem Thread ausführen. und du brauchst ja einen, der die zeit misst und einen, der die funktion ausführt.</p>
<p>Wenn du allerdings an den fremden Code rankommst, also direkt an den Quellcode, dann kannst du da die zeitmessung auch direkt einbauen.<br />
Bau doch einen thread und nur, wenn die funktion ewig braucht, dann brich den thread ab und erstelle einen neuen. Ansonsten beendet sich der thread eben nciht sondern setzt nur ein flag dass erfertig ist. aber irge3ndwie ist das alles nur gefrickel. am besten du überarbeitest die fremde Funktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329637</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 21 Jul 2007 09:37:58 GMT</pubDate></item><item><title><![CDATA[Reply to Unendliche Loops abbrechen ? on Sat, 21 Jul 2007 09:43:03 GMT]]></title><description><![CDATA[<pre><code>startTime = getTime()
while(getTime() - startTime &lt; 1000)) {
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329645</guid><dc:creator><![CDATA[ähm]]></dc:creator><pubDate>Sat, 21 Jul 2007 09:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to Unendliche Loops abbrechen ? on Sat, 21 Jul 2007 09:58:06 GMT]]></title><description><![CDATA[<p>ich habe einen fremden Code == while(1==1){Sleep(10);} == nicht veränderbar, weil nicht von mir (DLL Funktion)</p>
<p>Echt verzwickt das Ganze <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329647</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Sat, 21 Jul 2007 09:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to Unendliche Loops abbrechen ? on Sat, 21 Jul 2007 10:17:37 GMT]]></title><description><![CDATA[<p>Und wenn du den Thread nur einmal startest?</p>
<p>Wenn sich dieser nicht nach dem beenden des Loops auch beendet kannst du oihn ja für den nächsten Aufruf &quot;recyclen&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329656</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Sat, 21 Jul 2007 10:17:37 GMT</pubDate></item><item><title><![CDATA[Reply to Unendliche Loops abbrechen ? on Sat, 21 Jul 2007 10:21:04 GMT]]></title><description><![CDATA[<p>Das Problem dabei ist, das die Ausführung eines neuen Zykluss nur durch ein<br />
Flag zum Thread gesendet werden kann, und bis der Thread das mitbekommt<br />
(Taskprozzersorleistungsverteilung) ist es leider manchmal zu spät.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329660</guid><dc:creator><![CDATA[thenoname]]></dc:creator><pubDate>Sat, 21 Jul 2007 10:21:04 GMT</pubDate></item><item><title><![CDATA[Reply to Unendliche Loops abbrechen ? on Sat, 21 Jul 2007 12:58:40 GMT]]></title><description><![CDATA[<p>Du könntest, jetzt mal windows vorausgesetzt den Thread brutal mit SetThreadContext aus der Funktion rausreißen, und dann den Thread weiter benutzen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1329729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1329729</guid><dc:creator><![CDATA[Dennis123]]></dc:creator><pubDate>Sat, 21 Jul 2007 12:58:40 GMT</pubDate></item></channel></rss>