<?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[Programmierung meherer Prozesse (Threads)]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich möchte gern die Möglichkeiten der Threadprogrammierung im Borland C++ für die Online-Grafikausgabe meiner Messdaten benutzen. Ich habe versucht einen Testthread zu schreiben, aber irgendwie arbeitet Borland C++ erst mein Hauptprogramm ab und danach meinen zuvor mit Resume angeschalteten Thread - Arbeitet als immernoch sequentiell. Ich bräuchte Informationen zur Programmierung von Threads - entweder per Forum, oder mit einem Tipp eines Buches :-). Die Hilfe beschreibt zwar den Aufbau etc. aber ein kleines Beispiel wäre echt super.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/136778/programmierung-meherer-prozesse-threads</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 04:52:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/136778.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Feb 2006 08:04:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programmierung meherer Prozesse (Threads) on Mon, 13 Feb 2006 08:04:12 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich möchte gern die Möglichkeiten der Threadprogrammierung im Borland C++ für die Online-Grafikausgabe meiner Messdaten benutzen. Ich habe versucht einen Testthread zu schreiben, aber irgendwie arbeitet Borland C++ erst mein Hauptprogramm ab und danach meinen zuvor mit Resume angeschalteten Thread - Arbeitet als immernoch sequentiell. Ich bräuchte Informationen zur Programmierung von Threads - entweder per Forum, oder mit einem Tipp eines Buches :-). Die Hilfe beschreibt zwar den Aufbau etc. aber ein kleines Beispiel wäre echt super.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/992809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992809</guid><dc:creator><![CDATA[schmiggy]]></dc:creator><pubDate>Mon, 13 Feb 2006 08:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierung meherer Prozesse (Threads) on Mon, 13 Feb 2006 08:19:58 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=8" rel="nofollow">Rund um die Programmierung</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/992816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992816</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 13 Feb 2006 08:19:58 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierung meherer Prozesse (Threads) on Tue, 14 Feb 2006 07:01:47 GMT]]></title><description><![CDATA[<p>Erstens: Falsches Forum, ein Mod wird den Thread aber wohl bald verschieben.<br />
€Ich glaube das sollte eher ins BCB-Forum?<br />
Zweitens:<br />
Vielleicht kannst du uns mal ein bissel Code zeigen?</p>
<p>So sieht bei mir das Grundgerüst eins Threads aus:</p>
<pre><code class="language-cpp">#include &lt;vcl.h&gt;
#pragma hdrstop
#include &quot;Unit2.h&quot;
#pragma package(smart_init)
//---------------------------------------------------------------------------
__fastcall TMyThread::TMyThread(bool CreateSuspended): TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall TMyThread::Execute()
{
 while(!Terminated)
 {  
  // ---- Hier fügen Sie den Quelltext ein ----
  Sleep(100);
 }
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/992817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992817</guid><dc:creator><![CDATA[Beliah]]></dc:creator><pubDate>Tue, 14 Feb 2006 07:01:47 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierung meherer Prozesse (Threads) on Mon, 13 Feb 2006 08:37:05 GMT]]></title><description><![CDATA[<p>Also bei mir sieht der Thread genauso aus. In der Execute rufe ich die Synchronize Funktion auf und die gleicht die Funktion UpdataProc ab. Nun ist das Problem, dass ich während des Abgleichs (Schreiben ins Caption von Form1) nichts anderes machen kann. Selbst das Formfeld lässt sich nicht bewegen. Ergo - sequentielles Abarbeiten und nicht paralleles.<br />
Was mache ich falsch? Muss ich noch irgendwelche Attribute setzen? Ich habe dieses Testbeispiel geschrieben, da es sich sehr dem Problem der Onlinegrafikanzeige ähnelt, aber schneller zu programmieren ging.</p>
<p>extern TForm *Form1;<br />
__fastcall ParThread::ParThread(bool CreateSuspended)<br />
: TThread(CreateSuspended)<br />
{<br />
// Priority = tpNormal;<br />
}<br />
//---------------------------------------------------------------------------<br />
void __fastcall ParThread::Execute()<br />
{<br />
while (!Terminated)<br />
{<br />
Synchronize(UpdateProc);<br />
Suspend();<br />
}<br />
}<br />
//---------------------------------------------------------------------------<br />
void __fastcall ParThread::UpdateProc()<br />
{</p>
<p>while (l &lt; 100)<br />
{<br />
Form1-&gt;Caption = &quot;Die Variable hat den Wert: &quot;+IntToStr(l);<br />
l++;<br />
Sleep(5);<br />
if (Terminated) return;<br />
}<br />
}<br />
//---------------------------------------------------------------------------</p>
]]></description><link>https://www.c-plusplus.net/forum/post/992826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992826</guid><dc:creator><![CDATA[schmiggy]]></dc:creator><pubDate>Mon, 13 Feb 2006 08:37:05 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierung meherer Prozesse (Threads) on Mon, 13 Feb 2006 08:51:31 GMT]]></title><description><![CDATA[<p>1. Bitte CODE oder CPP Tags benutzen, danke<br />
2.</p>
<blockquote>
<p>Beschreibung</p>
<p>Synchronize löst den Aufruf einer bestimmten Methode aus, die vom VCL-Haupt-Thread ausgeführt werden soll. Durch dieses indirekte Verfahren werden Konflikte in Multithread-Anwendungen vermieden. Wenn Sie nicht sicher sind, ob ein Methodenaufruf Thread-sicher ist, rufen Sie die Methode aus Synchronize heraus auf.</p>
<p><strong>Der Thread wird unterbrochen, während die angegebene Methode ausgeführt wird.</strong></p>
</blockquote>
<p>(Hervorhebung von mir)</p>
<p>Mögliche Lösung, könnte bessere geben:</p>
<p>Berechnung und Form interaktion in seperaten Funktionen.Nur Form interaktion über Synchronize.Parameter können über Private-Variablen des Threads übergeben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/992830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992830</guid><dc:creator><![CDATA[Beliah]]></dc:creator><pubDate>Mon, 13 Feb 2006 08:51:31 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierung meherer Prozesse (Threads) on Mon, 13 Feb 2006 09:17:38 GMT]]></title><description><![CDATA[<p>Super! Vielen Dank. Jetzt hab ichs verstanden - und funktionieren tuts auch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<pre><code>__fastcall ParThread::ParThread(bool CreateSuspended)
        : TThread(CreateSuspended)
{
  Priority = tpNormal;
  l = 0;
}
//---------------------------------------------------------------------------
void __fastcall ParThread::Execute()
{
  while (!Terminated)
  {
    DecVar();
    Synchronize(UpdateProc);
    //Suspend();
  }
}
//---------------------------------------------------------------------------
void __fastcall ParThread::UpdateProc()
{
  Form1-&gt;Caption = &quot;Die Variable hat den Wert: &quot;+IntToStr(l);
}
//---------------------------------------------------------------------------
void  ParThread::DecVar()
{
  l++;
  Sleep(5);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/992858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992858</guid><dc:creator><![CDATA[schmiggy]]></dc:creator><pubDate>Mon, 13 Feb 2006 09:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierung meherer Prozesse (Threads) on Mon, 13 Feb 2006 09:26:00 GMT]]></title><description><![CDATA[<p>Kein Problem <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>Also immer dran denken: Synchronize ist so als ob man die Funktion direkt im Hauptthread ausführt und somit ist ein Thread der nur ein Synchronize aufruft nuzulos. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/992859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992859</guid><dc:creator><![CDATA[Beliah]]></dc:creator><pubDate>Mon, 13 Feb 2006 09:26:00 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierung meherer Prozesse (Threads) on Mon, 13 Feb 2006 14:41:17 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=1819" rel="nofollow">kingruedi</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=8" rel="nofollow">Rund um die Programmierung</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=2" rel="nofollow">VCL/CLX (Borland C++ Builder)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/993124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/993124</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 13 Feb 2006 14:41:17 GMT</pubDate></item><item><title><![CDATA[Reply to Programmierung meherer Prozesse (Threads) on Tue, 14 Feb 2006 06:50:58 GMT]]></title><description><![CDATA[<p>Du hast ein grundlegenderes Problem: Frag dich mal selber ob wirlich bei jeder Berechnung ein Update der Grafik nötig ist?Bedenke: der Mensch sieht grade mal bis zu 50fps. Was drüber liegt sieht er nicht mehr. Vielleicht wäre eine passendere Architektur, dass du im Thread die Daten berechnest, sie in einen Puffer schiebst, und die Anzeige sich bei einem Festgelegten UPdate (die Erfahrung zeigt, dass oftmals 2Hz Updaterate mehr als ausreichend sind = alle 500ms ein Update) die Daten aus dem PUffer zieht. ICh persönlich halte es im Allgemeinen für schlehten Stil direkt im Thread auf irgendwelchen GUI-Elementen rumzuzeichnen. Das bremst den Thread nur unnötig aus, da das Zeichnen auf GUI-Elementen (dazu gehörtauch Zuweisen von Text, etc. ) aus THreadsicht ewig + 3 Tage dauert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/993641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/993641</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Tue, 14 Feb 2006 06:50:58 GMT</pubDate></item></channel></rss>