<?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[threads - eigenes handle und id herausfinden]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich mit</p>
<pre><code class="language-cpp">temphandle=CreateThread(NULL, 0, schlagmichtot, &amp;param, 0, &amp;tempid);
</code></pre>
<p>einen neuen Thread starte, kann ich dann innerhalb des Threads die eigene Id (hier in tempid) und das eigene Handle (hier in temphandle) herausfinden?</p>
<p>Bisher packe ich das in den Parameter und übergebe das dem Thread, aber vielleicht kann ich mir das ja sparen....</p>
<p>Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/147062/threads-eigenes-handle-und-id-herausfinden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 16:16:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147062.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 13 May 2006 13:31:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Sat, 13 May 2006 13:51:27 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich mit</p>
<pre><code class="language-cpp">temphandle=CreateThread(NULL, 0, schlagmichtot, &amp;param, 0, &amp;tempid);
</code></pre>
<p>einen neuen Thread starte, kann ich dann innerhalb des Threads die eigene Id (hier in tempid) und das eigene Handle (hier in temphandle) herausfinden?</p>
<p>Bisher packe ich das in den Parameter und übergebe das dem Thread, aber vielleicht kann ich mir das ja sparen....</p>
<p>Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057056</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Sat, 13 May 2006 13:51:27 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Sat, 13 May 2006 13:49:07 GMT]]></title><description><![CDATA[<p>die id kriegste mit 'GetCurrentThreadId()' als handle nimmste -1 oder 0xffffffff.<br />
dann brauchste nix weiterzureichen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057067</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Sat, 13 May 2006 13:49:07 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Sat, 13 May 2006 13:54:23 GMT]]></title><description><![CDATA[<p>Das Handle brauche ich um woanders mittels WaitForSingleObject auf diesen Thread warten zu können.</p>
<p>Danke auf jeden Fall für GetCurrentThreadId().</p>
<p>Gruss<br />
R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057072</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Sat, 13 May 2006 13:54:23 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Sat, 13 May 2006 14:07:02 GMT]]></title><description><![CDATA[<p>std::Robin schrieb:</p>
<blockquote>
<p>Das Handle brauche ich um woanders mittels WaitForSingleObject auf diesen Thread warten zu können.</p>
</blockquote>
<p>nimm dies: <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getcurrentthread.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getcurrentthread.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057077</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Sat, 13 May 2006 14:07:02 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Sat, 13 May 2006 14:10:24 GMT]]></title><description><![CDATA[<p>vielen Dank (Ich muss eben in der msdn blind gewesen sein. <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=":/"
      alt="😕"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057080</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Sat, 13 May 2006 14:10:24 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Sat, 13 May 2006 15:12:36 GMT]]></title><description><![CDATA[<p>std::Robin schrieb:</p>
<blockquote>
<p>Das Handle brauche ich um woanders mittels WaitForSingleObject auf diesen Thread warten zu können.</p>
</blockquote>
<p>Mit der ID kannst Du aber nicht warten! Du brauchst schon ein Handle!<br />
Und ich pers. empfehle nicht aus der ID das Handle mittles &quot;OpenThread&quot; zu ermitteln.<br />
Wenn Du das Handle doch schon hast (durch CreateThread), dann kannst Du doch auch dieses an beliebigen anderen Stellen verwenden um darauf zu warten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057111</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 13 May 2006 15:12:36 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Sat, 13 May 2006 16:51:04 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Und ich pers. empfehle nicht aus der ID das Handle mittles &quot;OpenThread&quot; zu ermitteln.</p>
</blockquote>
<p>geht aber auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057169</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Sat, 13 May 2006 16:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Sat, 13 May 2006 17:14:28 GMT]]></title><description><![CDATA[<p>net schrieb:</p>
<blockquote>
<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Und ich pers. empfehle nicht aus der ID das Handle mittles &quot;OpenThread&quot; zu ermitteln.</p>
</blockquote>
<p>geht aber auch.</p>
</blockquote>
<p>Wie gesagt, ich empfehle es nicht. Der Grund:<br />
Es geht nur &quot;zuverlässing&quot;, wenn zwischen einem möglichen Ende des Threads und dem Öffnen mit &quot;OpenThread&quot; eine &quot;kurze&quot; Zeit liegt. Liegt ein &quot;längerer&quot; Zeitraum dazwischen, so kann die ID schon von einem anderen Thread wiederverwendet worden sein.<br />
Also 100% zuverlässig geht es nur, wenn man sicher ist, das der Thread noch läuft. Falls dies unsicher ist, rate ich davon ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057179</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 13 May 2006 17:14:28 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Sun, 14 May 2006 09:33:16 GMT]]></title><description><![CDATA[<p>Ok, Openthread werde ich nicht benutzen...</p>
<pre><code class="language-cpp">//...irgendwo in der main...

        DWORD tempid;			
	HANDLE temphandle;		
	temphandle=CreateThread(NULL, 0, schlagmichtot, ncd, 0, &amp;tempid);
        //Ab hier läuft der workerthread schon, jedoch die &quot;richtigen&quot; Variablen noch nicht zugewesen

	handles_guard.LockWriter();
	handles[id]=temphandle;
	handles_guard.UnlockWriter();

        threads_guard.LockWriter();
	threads[tempsock]=tempid;
	threads_guard.UnlockWriter();
</code></pre>
<p>Das Problem ist, dass ich mit dem Füllen der Tempvariablen den Thread schon gestartet habe, und die Tempvariablen noch nicht in den endgültigen Variabalen (vektoren, maps) gespeichert sind. Im ungüstigsten Fall greift der Workerthread schon darauf zu und findet sich selbst nicht, bzw verpasst etwas, da er von anderen Threads als nichtexistent angesehen wird.</p>
<p>Daher dachte ich, ich lasse den Workerthread sich selbst eintragen, dann kann ich ganz sicher sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057430</guid><dc:creator><![CDATA[std**Robin]]></dc:creator><pubDate>Sun, 14 May 2006 09:33:16 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Mon, 15 May 2006 08:04:47 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>net schrieb:</p>
<blockquote>
<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Und ich pers. empfehle nicht aus der ID das Handle mittles &quot;OpenThread&quot; zu ermitteln.</p>
</blockquote>
<p>geht aber auch.</p>
</blockquote>
<p>Wie gesagt, ich empfehle es nicht. Der Grund:<br />
Es geht nur &quot;zuverlässing&quot;, wenn zwischen einem möglichen Ende des Threads und dem Öffnen mit &quot;OpenThread&quot; eine &quot;kurze&quot; Zeit liegt. Liegt ein &quot;längerer&quot; Zeitraum dazwischen, so kann die ID schon von einem anderen Thread wiederverwendet worden sein.</p>
</blockquote>
<p>ich meinte sowas:</p>
<pre><code>HANDLE hthread = OpenThread (THREAD_ALL_ACCESS, FALSE, GetCurrentThreadId());
</code></pre>
<p>das gibt ein richtiges handle, nicht so'n 'fakehandle' wie man's von 'GetCurrentThread()' bekommt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057906</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Mon, 15 May 2006 08:04:47 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Mon, 15 May 2006 08:56:54 GMT]]></title><description><![CDATA[<p>Da kannst Du auch DuplicateHandle verwenden...</p>
<pre><code class="language-cpp">HANDLE hThread;
    if (DuplicateHandle( GetCurrentProcess(), GetCurrentThread(),
      GetCurrentProcess(), &amp;hThread, 0, FALSE, DUPLICATE_SAME_ACCESS ) == 0) {
      // failed...
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1057940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057940</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 15 May 2006 08:56:54 GMT</pubDate></item><item><title><![CDATA[Reply to threads - eigenes handle und id herausfinden on Mon, 15 May 2006 08:58:47 GMT]]></title><description><![CDATA[<p>std::Robin schrieb:</p>
<blockquote>
<p>Das Problem ist, dass ich mit dem Füllen der Tempvariablen den Thread schon gestartet habe, und die Tempvariablen noch nicht in den endgültigen Variabalen (vektoren, maps) gespeichert sind. Im ungüstigsten Fall greift der Workerthread schon darauf zu und findet sich selbst nicht, bzw verpasst etwas, da er von anderen Threads als nichtexistent angesehen wird.</p>
</blockquote>
<p>Dann musst Du den Thread mit CREATE_SUSPENDED erzeugen und erst wenn alles initialisiert ist, diesen laufen lassen (ResumeThread)!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1057942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1057942</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 15 May 2006 08:58:47 GMT</pubDate></item></channel></rss>