<?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[Thread mit Parametern]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte mit CreateThread()einen thread starten und der auszuführenden Funktion zwei Parameter übergeben ( this, char*).<br />
Wie muss ich dieses anstellen?<br />
Kann mir da jemand helfen (mögl. Code)?</p>
<p>Danke<br />
WieGehtDas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/14150/thread-mit-parametern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Apr 2026 22:41:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/14150.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Jul 2002 14:05:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 29 Jul 2002 14:05:00 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte mit CreateThread()einen thread starten und der auszuführenden Funktion zwei Parameter übergeben ( this, char*).<br />
Wie muss ich dieses anstellen?<br />
Kann mir da jemand helfen (mögl. Code)?</p>
<p>Danke<br />
WieGehtDas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/75927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75927</guid><dc:creator><![CDATA[WieGehtDas]]></dc:creator><pubDate>Mon, 29 Jul 2002 14:05:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 29 Jul 2002 14:38:00 GMT]]></title><description><![CDATA[<p>Ich glaube Threads gehören eher nach WinAPI als nach standard C++!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/75928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75928</guid><dc:creator><![CDATA[Griffin]]></dc:creator><pubDate>Mon, 29 Jul 2002 14:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 29 Jul 2002 17:00:00 GMT]]></title><description><![CDATA[<p>Hier etwas Beispielcode (vielleicht was für die FAQ?):</p>
<pre><code class="language-cpp">// global
typedef struct
{
   volatile BOOL ThreadStoppen;
}PARAMS, *PPARAMS;

...

// in der WNDPROC
static PARAMS p;

case WM_CREATE:
   p.ThreadStoppen = FALSE;
   _beginthread (&amp;ThreadFunc, 0, &amp;p); // hier wird die Struktur übergeben
return 0;

case WM_CLOSE:
   p.ThreadStoppen = TRUE;
   PostQuitMessage (0);
return 0;  

...

// die Thread-Funktion
void __cdecl ThreadFunc(void* pVoid)
{
   volatile PPARAMS pparams;
   pparams = (PPARAMS) pVoid; 

   while (!pparams-&gt;ThreadStoppen) // solange weitermachen bis TRUE
   {
      MessageBeep (0xFFFFFFFF);
      Sleep (1000);
   }
}
</code></pre>
<p>Wie groß die Struktur mit den übergebenen Parametern ist, liegt an dir.</p>
<p>[edit]volatile bleibt jetzt! :p [/edit]</p>
<p>[ Dieser Beitrag wurde am 08.08.2002 um 22:24 Uhr von <strong>TKool</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/75929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75929</guid><dc:creator><![CDATA[TKool]]></dc:creator><pubDate>Mon, 29 Jul 2002 17:00:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 29 Jul 2002 17:07:00 GMT]]></title><description><![CDATA[<p>warum volatile ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/75930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75930</guid><dc:creator><![CDATA[volatilist]]></dc:creator><pubDate>Mon, 29 Jul 2002 17:07:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 29 Jul 2002 17:11:00 GMT]]></title><description><![CDATA[<p>...damit der Compiler nicht auf dumme Ideen kommt.<br />
Sowas wie den abzufragenden Wert in ein Prozessorregister zu packen.<br />
Dann klappt das mit dem auf TRUE setzen natürlich nicht und<br />
der Task Manager hat wieder was zu tun <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/75931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75931</guid><dc:creator><![CDATA[TKool]]></dc:creator><pubDate>Mon, 29 Jul 2002 17:11:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 29 Jul 2002 17:15:00 GMT]]></title><description><![CDATA[<p>volatile ist an dieser Stelle total sinnlos</p>
]]></description><link>https://www.c-plusplus.net/forum/post/75932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75932</guid><dc:creator><![CDATA[Treno]]></dc:creator><pubDate>Mon, 29 Jul 2002 17:15:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 29 Jul 2002 17:18:00 GMT]]></title><description><![CDATA[<p>Na super, damit ist jetzt allen geholfen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Kannst du auch erklären warum, oder kannst du hier nur dumm herumtrollen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/75933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75933</guid><dc:creator><![CDATA[TKool]]></dc:creator><pubDate>Mon, 29 Jul 2002 17:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 29 Jul 2002 18:43:00 GMT]]></title><description><![CDATA[<p>Weil Du den Zeiger volatile machst, und nicht die Struktur selbst. Und der Zeiger ist nur innerhalb des Threads bekannt, also ist es nicht nötig, dass der Zeiger volatile ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/75934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75934</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Mon, 29 Jul 2002 18:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Tue, 30 Jul 2002 06:17:00 GMT]]></title><description><![CDATA[<p>Einspruch!</p>
<p>Im Petzold ist das aber ganz anders beschrieben.<br />
Dort verwendet er eben aus dem vom mir genannten Grund &quot;volatile&quot;!<br />
Wer es nicht glaubt, kann das auf der Seite 1137 nachlesen (5. Auflage). <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/75935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75935</guid><dc:creator><![CDATA[TKool]]></dc:creator><pubDate>Tue, 30 Jul 2002 06:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Tue, 30 Jul 2002 13:36:00 GMT]]></title><description><![CDATA[<p>Tja, dann ist das anscheinend ein Fehler im Petzold. pparams ist volatile, aber sinnvoll wäre es nur, wenn *pparams volatile wäre.<br />
&quot;Bitte beachten Sie, dass die Variable pparams inThread als volatile deklariert ist. Dieser Qualifizierer soll dem Compiler anzeigen, dass die Variable auf indirektem Weg verändert wird [...]&quot; - wo wird pparams bitte indirekt verändert???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/75936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75936</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Tue, 30 Jul 2002 13:36:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Tue, 30 Jul 2002 13:52:00 GMT]]></title><description><![CDATA[<p>In der MSDN steht:</p>
<ul>
<li></li>
</ul>
<p>Objects declared as volatile are not used in optimizations because their value can change at any time. The system always reads the current value of a volatile object at the point it is requested, even if the previous instruction asked for a value from the same object. Also, the value of the object is written immediately on assignment.<br />
*</p>
<p>Indirekt, weil in einem anderen Thread.<br />
In diesem Fall in der Hauptnachrichtenschleife des Prozesses.<br />
Zumindest verstehe ich das so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/75937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75937</guid><dc:creator><![CDATA[TKool]]></dc:creator><pubDate>Tue, 30 Jul 2002 13:52:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Tue, 30 Jul 2002 15:50:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Original erstellt von TKool:<br />
**In der MSDN steht:</p>
<ul>
<li></li>
</ul>
<p>Objects declared as volatile are not used in optimizations because their value can change at any time.<br />
*</p>
<p>Indirekt, weil in einem anderen Thread.<br />
In diesem Fall in der Hauptnachrichtenschleife des Prozesses.<br />
Zumindest verstehe ich das so.**</p>
</blockquote>
<p>Ich weiss, was volatile heisst. Allerdings ist pparams != *pparams</p>
]]></description><link>https://www.c-plusplus.net/forum/post/75938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/75938</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Tue, 30 Jul 2002 15:50:00 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 23 Feb 2004 12:43:26 GMT]]></title><description><![CDATA[<p>TKool schrieb:</p>
<blockquote>
<p>Einspruch!</p>
<p>Im Petzold ist das aber ganz anders beschrieben.<br />
Dort verwendet er eben aus dem vom mir genannten Grund &quot;volatile&quot;!<br />
Wer es nicht glaubt, kann das auf der Seite 1137 nachlesen (5. Auflage). <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Im Petzold wird die Structur aber so gebaut:</p>
<pre><code class="language-cpp">typedef struct 
{ 
    HWND hwnd;
    BOOL bContinue; // _ohne_ volatile
}PARAMS, *PPARAMS;
</code></pre>
<p>Dafür wird dann im Thread volatile benützt...</p>
<p>Was mich persönlich noch interessiert!<br />
Der Herr Petzold benutzt ja Im Thread _endthread();<br />
Ich denk das soll man nich damit der Thread von alleine &quot;ausläuft&quot; und nicht einfach gekillt wird?!?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/465862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/465862</guid><dc:creator><![CDATA[fredd-ausbuddler]]></dc:creator><pubDate>Mon, 23 Feb 2004 12:43:26 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 23 Feb 2004 12:46:58 GMT]]></title><description><![CDATA[<p>fredd-ausbuddler schrieb:</p>
<blockquote>
<p>Der Herr Petzold benutzt ja Im Thread _endthread();<br />
Ich denk das soll man nich damit der Thread von alleine &quot;ausläuft&quot; und nicht einfach gekillt wird?!?!</p>
</blockquote>
<p>Der Herr Petzold programmiert auch kein C++, sondern C. Und in C ist es völlig legal, _endthread() aufzurufen.<br />
Seine Dateien haben die Endung .c und nicht .cpp.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/465866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/465866</guid><dc:creator><![CDATA[Christoph]]></dc:creator><pubDate>Mon, 23 Feb 2004 12:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 23 Feb 2004 12:53:54 GMT]]></title><description><![CDATA[<p>cd9000 schrieb:</p>
<blockquote>
<p>Der Herr Petzold programmiert auch kein C++, sondern C.</p>
</blockquote>
<p>In gewisser Hinsicht ein überzeugendes Argument...</p>
<p>(bitte nicht hauen!)<br />
Aber wenn meine kleinen Dateien ein ++ hinter dem *.c haben dann ist es nicht mehr so gut _endthread() aufzurufen oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/465874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/465874</guid><dc:creator><![CDATA[fredd-ausbuddler]]></dc:creator><pubDate>Mon, 23 Feb 2004 12:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 23 Feb 2004 13:00:58 GMT]]></title><description><![CDATA[<p>cd9000 schrieb:</p>
<blockquote>
<p>Und in C ist es völlig legal, _endthread() aufzurufen.</p>
</blockquote>
<p>In C++ ist es ebenfalls völlig legal, _endthread aufzurufen. Bei falscher Handhabung passiert in beiden Fällen dummes Zeug, in C++ bekommt man das natürlich wesentlich schneller hin. Sinnlos bleibt _endthread aber immer.</p>
<p>Da das Abwürgen von Thread aber bei einigen Menschen ein krankhafter Zwang ist, verwendet Herr Petzold _endthread. Es soll nämlich niemand auf die Idee kommen, etwa ExitThread in einem mit _beginthread erstellten Thread zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/465882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/465882</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Mon, 23 Feb 2004 13:00:58 GMT</pubDate></item><item><title><![CDATA[Reply to Thread mit Parametern on Mon, 23 Feb 2004 13:05:23 GMT]]></title><description><![CDATA[<p>ThX!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/465887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/465887</guid><dc:creator><![CDATA[:)]]></dc:creator><pubDate>Mon, 23 Feb 2004 13:05:23 GMT</pubDate></item></channel></rss>