<?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[Eine Thread-Klasse erstellen]]></title><description><![CDATA[<p>Hallo!</p>
<p>ich hätte gern eine klasse die ich wie bei java als thread starten kann. aber ohne mfc oder externe andere libs (z.b. boost). reines winapi.</p>
<p>z.b:</p>
<pre><code class="language-cpp">class MyThread {
  public:  
    HANDLE h;  
    bool laufe;

    MyThread() {
      h=CreateThread(..); // Thread erzeugen
    }

    ~MyThread() {
      CloseHandle(h);
    }

    public void beendeThread() { // laufe auf false, damit thread beendet wird
      laufe=false;
    }

    static void CALLBACK ThreadFunc() {
      // initialisieren ...
      laufe=true;

      while (laufe) {
        // arbeiten
      }

      // deinitialisieren
    }

};
</code></pre>
<p>ist das so in etwa möglich? wie kann ich von der ThreadFunc auf die membervariable laufe zugreifen??</p>
<p>thx<br />
sn0b</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/80542/eine-thread-klasse-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 07:20:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/80542.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Jul 2004 09:31:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Thu, 22 Jul 2004 09:31:25 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>ich hätte gern eine klasse die ich wie bei java als thread starten kann. aber ohne mfc oder externe andere libs (z.b. boost). reines winapi.</p>
<p>z.b:</p>
<pre><code class="language-cpp">class MyThread {
  public:  
    HANDLE h;  
    bool laufe;

    MyThread() {
      h=CreateThread(..); // Thread erzeugen
    }

    ~MyThread() {
      CloseHandle(h);
    }

    public void beendeThread() { // laufe auf false, damit thread beendet wird
      laufe=false;
    }

    static void CALLBACK ThreadFunc() {
      // initialisieren ...
      laufe=true;

      while (laufe) {
        // arbeiten
      }

      // deinitialisieren
    }

};
</code></pre>
<p>ist das so in etwa möglich? wie kann ich von der ThreadFunc auf die membervariable laufe zugreifen??</p>
<p>thx<br />
sn0b</p>
]]></description><link>https://www.c-plusplus.net/forum/post/565746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/565746</guid><dc:creator><![CDATA[sn0b]]></dc:creator><pubDate>Thu, 22 Jul 2004 09:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Thu, 22 Jul 2004 09:46:22 GMT]]></title><description><![CDATA[<p>Wegen dem Zugriff auf die Attribute: übergib deiner ThreadFunc einfach nen this-Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/565764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/565764</guid><dc:creator><![CDATA[D*niel *chumann]]></dc:creator><pubDate>Thu, 22 Jul 2004 09:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Thu, 22 Jul 2004 09:48:37 GMT]]></title><description><![CDATA[<p>MSDN schrieb:</p>
<blockquote>
<p><strong>CloseHandle</strong></p>
<p>Closing a thread handle does not terminate the associated thread. To remove a thread object, you must terminate the thread, then close all handles to the thread.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/565767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/565767</guid><dc:creator><![CDATA[D*niel *chumann]]></dc:creator><pubDate>Thu, 22 Jul 2004 09:48:37 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Thu, 22 Jul 2004 09:52:33 GMT]]></title><description><![CDATA[<p>danke! aber wie mach ich das? das übergeben des this zeigers??</p>
<p>das das CloseHandle() den thread nicht zu macht ist mir auch schon aufgefallen.<br />
deswegen möchte ich ja laufe auf false setzen damit er selber ausgeht.... kann man das so machen??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/565770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/565770</guid><dc:creator><![CDATA[sn0b]]></dc:creator><pubDate>Thu, 22 Jul 2004 09:52:33 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Thu, 22 Jul 2004 10:15:24 GMT]]></title><description><![CDATA[<p>[cpp]<br />
class MyThread {<br />
public:<br />
HANDLE h;<br />
bool laufe;</p>
<p>MyThread() {<br />
h=CreateThread(ThreadFuncProxy,..., this, ...);<br />
// Thread erzeugen, &quot;this&quot; als PVOID ThreadParameter rübergeben<br />
}</p>
<p><strong>virtual</strong> ~MyThread()<br />
{<br />
beendeThread(); // Thread muß beendet sein, BEVOR<br />
CloseHandle(h);<br />
}</p>
<p>/// thread bescheid sagen, daß er sich demnächst beenden soll.<br />
/// virtual, da du das u.u. anders - z.B. mit einem Event - lösen mußt<br />
/// Design-Regel: darf beliebig oft aufgerufen werden, ohne das<br />
/// was schlimmes passiert<br />
<strong>virtual</strong> void sendeBeendeThread() {<br />
laufe=false;<br />
// Warten das Thread beendet ist:<br />
WaitForSingleObject(h, INFINITE);<br />
}</p>
<p>/// beende thread. Wirklich. Kommt erst zurück wenn thread nicht mehr<br />
<strong>virtual</strong> void beendeThread()<br />
{<br />
sendeBeendeThread();<br />
// Warten das Thread beendet ist:<br />
WaitForSingleObject(h, INFINITE);<br />
// statt dessen evtl. Wait mit timeout + TerminateThread falls nicht von allein<br />
}<br />
/// hier drin alles...<br />
<strong>virtual unsigned Run()</strong><br />
{<br />
// initialisieren ...<br />
laufe=true;</p>
<p>while (laufe) {<br />
// arbeiten<br />
}</p>
<p>// deinitialisieren<br />
}</p>
<p>protected:<br />
*<em>static unsigned CALLBACK ThreadFuncProxy(PVOID threadParam)<br />
{<br />
MyThread * instance = (MyThread <em>) threadParam;<br />
return instance-&gt;Run();<br />
}</em></em><br />
};<br />
[/cpp]</p>
<p>so in etwa...</p>
<p>Kommt halt darauf an, welche weiteren Funktionen der Win32 - Threads du zugänglich machen willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/565798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/565798</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Thu, 22 Jul 2004 10:15:24 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Thu, 22 Jul 2004 10:24:05 GMT]]></title><description><![CDATA[<p>SUPER! Vielen Dank!! Genauso hab ich mir das vorgestellt!!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <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>ciao<br />
sn0b</p>
]]></description><link>https://www.c-plusplus.net/forum/post/565814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/565814</guid><dc:creator><![CDATA[sn0b]]></dc:creator><pubDate>Thu, 22 Jul 2004 10:24:05 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Thu, 22 Jul 2004 14:22:10 GMT]]></title><description><![CDATA[<p>Wenn du in deinem Programm Funktionen des Laufzeitsystems verwendest genügt CreateThread() nicht mehr, du solltest in diesem Fall besser _beginthreadex() verwenden.</p>
<p>mfg JJ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/566159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/566159</guid><dc:creator><![CDATA[John Doe]]></dc:creator><pubDate>Thu, 22 Jul 2004 14:22:10 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Wed, 06 Oct 2004 08:15:59 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich probeir mich auch gerade an der Threadprogrammierung iner Klasse, bzw. allgemein an der Threadprogrammierung und scheitere <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="😞"
    /><br />
Ich hab mein Code eigentlich genauso gehalten, wie in dem Beispiel hier. Jeodhc bekomme ich folgenden Fehler:</p>
<p>error C2664: 'CreateThread' : Konvertierung des Parameters 1 von 'unsigned int (void *)' in 'struct _SECURITY_ATTRIBUTES *' nicht moeglich</p>
<p>Ist die Parameterreihenfolge so korrekt, wie sie hier im CreateThread angegeben ist ? Was sind die anderen Parameter ?</p>
<p>Die ThreadFuncProxy habe ich nur in der .h Datei als static deklariert, wie in dem Beispiel. Habe ich irgendwas vergessen ? <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>
<p>the-FoX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/622185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/622185</guid><dc:creator><![CDATA[the-FoX]]></dc:creator><pubDate>Wed, 06 Oct 2004 08:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Wed, 06 Oct 2004 09:30:29 GMT]]></title><description><![CDATA[<blockquote>
<p>Ist die Parameterreihenfolge so korrekt, wie sie hier im CreateThread angegeben ist ?</p>
</blockquote>
<p>Nö. <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="😉"
    /> (denk ich mal)</p>
<p>Mußt Du in MSDN gucken</p>
]]></description><link>https://www.c-plusplus.net/forum/post/622235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/622235</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Wed, 06 Oct 2004 09:30:29 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Sat, 09 Oct 2004 00:11:53 GMT]]></title><description><![CDATA[<p>was muss da genau übergeben werden:</p>
<pre><code class="language-cpp">h=CreateThread(ThreadFuncProxy,..., this, ...);
</code></pre>
<p>this pointer von was? was sonst noch?</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/624667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/624667</guid><dc:creator><![CDATA[coderr]]></dc:creator><pubDate>Sat, 09 Oct 2004 00:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Thread-Klasse erstellen on Sat, 09 Oct 2004 01:12:45 GMT]]></title><description><![CDATA[<p>this pointer von thread-klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/624671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/624671</guid><dc:creator><![CDATA[this]]></dc:creator><pubDate>Sat, 09 Oct 2004 01:12:45 GMT</pubDate></item></channel></rss>