<?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[Sleep-Multithreading]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe hier schon ziemlich viel zum Thema Multithreading gelesen..jedoch nicht die eigentliche Lösung für mein Problem gefunden.<br />
Eigentlich ganz einfach:<br />
Ich habe eine bestimmte Zeit die ich mit z.B. Sleep(50) abwarte. In der Zwischenzeit sollte in einem anderen Thread nehmen wir mal an etwas berechnet werden. Sobald Sleep die 50ms abgewartet hat, sollte die Berechnung sofort unterbrochen werden und an die Sleep stelle gesprungen werden.</p>
<p>Kleiner Pseudocode wäre nett..</p>
<p>Danke</p>
<p>Vielleicht sollte ich noch erwähnen,dass ich keine erfahrung mit MT habe.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187380/sleep-multithreading</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 19:57:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187380.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Jul 2007 08:00:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 08:00:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe hier schon ziemlich viel zum Thema Multithreading gelesen..jedoch nicht die eigentliche Lösung für mein Problem gefunden.<br />
Eigentlich ganz einfach:<br />
Ich habe eine bestimmte Zeit die ich mit z.B. Sleep(50) abwarte. In der Zwischenzeit sollte in einem anderen Thread nehmen wir mal an etwas berechnet werden. Sobald Sleep die 50ms abgewartet hat, sollte die Berechnung sofort unterbrochen werden und an die Sleep stelle gesprungen werden.</p>
<p>Kleiner Pseudocode wäre nett..</p>
<p>Danke</p>
<p>Vielleicht sollte ich noch erwähnen,dass ich keine erfahrung mit MT habe.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328217</guid><dc:creator><![CDATA[woldo]]></dc:creator><pubDate>Thu, 19 Jul 2007 08:00:12 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 08:23:47 GMT]]></title><description><![CDATA[<p>Habe ich das richtig verstanden? Thread 1 legt sich schlafen und erwartet am Ende dieser Schlafphase <strong>sofort</strong> das Kommando übernehmen zu können? Wie genau müssen denn diese Zeitbedingungen eingehalten werden?</p>
<p>Windows ist kein Echtzeit-OS - das wirst du nicht überreden können, dir wirklich auf die Millisekunde exakt den Prozessor zu übergeben. Das beste, was du machen kannst, ist die Priorität des Threads hoch genug zu setzen (höher als die deines zweiten Threads), dann bekommt er seine Rechenzeit so schnell wie möglich zu gewiesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328233</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 19 Jul 2007 08:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 08:40:28 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Habe ich das richtig verstanden? Thread 1 legt sich schlafen und erwartet am Ende dieser Schlafphase sofort das Kommando übernehmen zu können? Wie genau müssen denn diese Zeitbedingungen eingehalten werden?</p>
</blockquote>
<p>Ich versuche einfach die best-mögliche Lösung zu finden. Wenn nicht in 1 ms, dann hald in 3 oder 4.<br />
Das mit dem RTOS ist schon klar..<br />
Mir geht es jetzt aber vor allem darum, den Multithread-Algorithmus auf dieses Bsp hin zu verstehen..?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328254</guid><dc:creator><![CDATA[woldo]]></dc:creator><pubDate>Thu, 19 Jul 2007 08:40:28 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 08:49:01 GMT]]></title><description><![CDATA[<p>Die bestmögliche Lösung wird es wohl sein, die Prioritäten etwas nachzujustieren. Der Scheduler gibt den aktiven Threads nach bestimmten Regeln nacheinander die Rechenzeit (solange du kein Multi-Prozessor-System hast, kann immer nur ein Thread zur selben Zeit arbeiten, der Rest muß warten, bis er dran ist) - je höher die Priorität eines Threads ist, desto größer sind seine Chancen, an die Reihe zu kommen.<br />
Durch das Sleep() wird dein Thread inaktiv geschaltet und nach der angegebenen Zeit wieder reaktiviert (wenn er wichtig genug ist, wird ihm das System bei nächster Gelegenheit den Prozessor überlassen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328263</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 19 Jul 2007 08:49:01 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 09:31:26 GMT]]></title><description><![CDATA[<p>ok,<br />
kann ich dann aber davon ausgehn, dass mein Programm (wie immer mit möglichem Verzug) während meines Sleep() die Berechnung ausführt und nicht sonst irgentwas macht?... deshalb eben die Frage bezüglich dem Multithread. Denn nach dem die Sleep()-Time vorbei ist wird sie wieder gestartet und es muss bereits eine weitere Berechnung durchgeführt werden.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328314</guid><dc:creator><![CDATA[woldo]]></dc:creator><pubDate>Thu, 19 Jul 2007 09:31:26 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 09:54:33 GMT]]></title><description><![CDATA[<p>Wieviel Zeit dein Arbeitsthread von diesen 50ms tatsächlich abbekommt, lässt sich nur schwer einschätzen (schau mal in den Task-Manager - du wirst dich wundern, wer auf deinem Computer alles Rechenzeit beansprucht).</p>
<p>Allerdings: Wenn der zweite Thread nach der Unterbrechung wieder an die Reihe kommt, macht er genau dort weiter, wo er aufgehört hat - außer natürlich, du hast ihn vorher pulverisiert, aber das wäre extrem unhöflich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>(PS: Kannst du deine Grund-Konstellation mal etwas genauer erklären?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328337</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 19 Jul 2007 09:54:33 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 10:17:12 GMT]]></title><description><![CDATA[<blockquote>
<p>(PS: Kannst du deine Grund-Konstellation mal etwas genauer erklären?)</p>
</blockquote>
<p>Ich muss in einem zyklischen takt etwas ausgeben.<br />
-Takt beginnt-&gt;sleep beginnt zu zählen<br />
-(jetzt mein problem-&gt;das wechseln in diesen thread) in einem anderen Thread erfolgt die ausgabe<br />
-Sleep() hat fertig-&gt;ich springe an dessen stelle, mache eine kurze berechnung und starte Sleep() vom neuen.. and so on</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328363</guid><dc:creator><![CDATA[woldo]]></dc:creator><pubDate>Thu, 19 Jul 2007 10:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 10:24:42 GMT]]></title><description><![CDATA[<p>Du meinst, der Ausgabethread soll eine Meldung ausgeben und dann warten, daß der Hauptthread mit der nächsten &quot;Runde&quot; begonnen hat? Dann mußt du die beiden Threads richtig miteinander synchronisieren (per Events):</p>
<pre><code class="language-cpp">//Thread 1:
while(1)
{
  //rechne etwas aus
  evt_output.SetEvent();
  Sleep(50);
}

//Thread 2:
while(1)
{
  WaitForSingleObject(evt_output,INFINITE);
  //gib Daten aus
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1328368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328368</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 19 Jul 2007 10:24:42 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 10:33:34 GMT]]></title><description><![CDATA[<p>ja genau <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Danke ertmals CStoll</p>
<p>(wahrscheinlich werd ich mich eh schon bald wieder melden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328371</guid><dc:creator><![CDATA[woldo]]></dc:creator><pubDate>Thu, 19 Jul 2007 10:33:34 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 12:17:26 GMT]]></title><description><![CDATA[<p>Bist Du denn von dem Hauptthread abhängig?<br />
Oder genügt es nicht einfach 50msec zu warten und dann wieder zu arbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328483</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 19 Jul 2007 12:17:26 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 12:29:11 GMT]]></title><description><![CDATA[<blockquote>
<p>Bist Du denn von dem Hauptthread abhängig?<br />
Oder genügt es nicht einfach 50msec zu warten und dann wieder zu arbeiten?</p>
</blockquote>
<p>Du meinst, dass ich die Ausgabe abwarte, die 50ms abwarte und wieder ausgebe?<br />
Das funktioniert leider nicht, da die &quot;Ausgabe&quot; wahrscheinlich so lange dauern wird-dessen Zeit nicht vernachlässigt werden darf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328495</guid><dc:creator><![CDATA[woldo]]></dc:creator><pubDate>Thu, 19 Jul 2007 12:29:11 GMT</pubDate></item><item><title><![CDATA[Reply to Sleep-Multithreading on Thu, 19 Jul 2007 13:45:34 GMT]]></title><description><![CDATA[<p>Selbst das bekommst Du doch in.</p>
<p>GetTickCount machen wann die letzte Ausgabe erfolgte (begann).<br />
Sleep einfach solange durchführen 50-ZeitSeitLetzterAusgabe.<br />
Evtl. gar keinen Sleep durchführen wenn schon 50msec rum sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1328588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1328588</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 19 Jul 2007 13:45:34 GMT</pubDate></item></channel></rss>