<?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?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Render Funktion die mir ein Bild generiert. In dieser Renderfunktion wird eine Funktion aufgerufen, welche das Bild nach Pattern absucht. Das Funktioniert auch wunderbar, nur bleibt das Bild stehen, sobald die Matchfunktion aufgerufen wird.</p>
<p>Wie lasse ich die Funktion asynchron zum Rest von Render laufen? So dass, das Bild ohne stehen zu bleiben weiter läuft und die match Funktion nur die Ergebnisse zurück liefert, wenn sie ein Ergebnis hat.</p>
<p>Danke und Grüße!</p>
<pre><code class="language-cpp">HRESULT
MRBBApp::Render(){
	HRESULT hr = S_OK;
	try{
		// Get Video
		m_pCamera-&gt;GetVideoBuffer(m_pData);

		if(this-&gt;frameCounter != 0 &amp;&amp; this-&gt;frameCounter % 10 == 0){
				matcher-&gt;match(m_iVideoImgWidth, m_iVideoImgHeight,sizeof(short),(short*)m_pData, TEMP);
		}

		// Set Video Texture
		//m_pData is RGB565 
		m_pBackPlane-&gt;SetTexture(m_pData);

		// Clear the backbuffer to a blue color
		hr = m_pD3DMDevice-&gt;Clear( 0, NULL, D3DMCLEAR_TARGET | D3DMCLEAR_ZBUFFER, D3DMCOLOR_XRGB(0,0,255), 1.0f, 0 );

		// Begin the scene
		if( SUCCEEDED( hr = m_pD3DMDevice-&gt;BeginScene() ) ){
			// Draw Video Background
			m_pBackPlane-&gt;Draw();
			hr = m_pD3DMDevice-&gt;EndScene();
		}
		hr = m_pD3DMDevice-&gt;Present( NULL, NULL, NULL, NULL );
	}catch(...){
		OutputDebugString(L&quot;Exception in Render-Loop caught!\n&quot;);
		MessageBox(NULL,L&quot;Exception in Render-Loop!&quot;, L&quot;Error!&quot;, MB_OK | MB_ICONERROR);
		return E_FAIL;
	}
	CalculateFramerate();
	return hr;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/228271/threads</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 19:22:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228271.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Nov 2008 09:35:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads? on Wed, 26 Nov 2008 09:35:52 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Render Funktion die mir ein Bild generiert. In dieser Renderfunktion wird eine Funktion aufgerufen, welche das Bild nach Pattern absucht. Das Funktioniert auch wunderbar, nur bleibt das Bild stehen, sobald die Matchfunktion aufgerufen wird.</p>
<p>Wie lasse ich die Funktion asynchron zum Rest von Render laufen? So dass, das Bild ohne stehen zu bleiben weiter läuft und die match Funktion nur die Ergebnisse zurück liefert, wenn sie ein Ergebnis hat.</p>
<p>Danke und Grüße!</p>
<pre><code class="language-cpp">HRESULT
MRBBApp::Render(){
	HRESULT hr = S_OK;
	try{
		// Get Video
		m_pCamera-&gt;GetVideoBuffer(m_pData);

		if(this-&gt;frameCounter != 0 &amp;&amp; this-&gt;frameCounter % 10 == 0){
				matcher-&gt;match(m_iVideoImgWidth, m_iVideoImgHeight,sizeof(short),(short*)m_pData, TEMP);
		}

		// Set Video Texture
		//m_pData is RGB565 
		m_pBackPlane-&gt;SetTexture(m_pData);

		// Clear the backbuffer to a blue color
		hr = m_pD3DMDevice-&gt;Clear( 0, NULL, D3DMCLEAR_TARGET | D3DMCLEAR_ZBUFFER, D3DMCOLOR_XRGB(0,0,255), 1.0f, 0 );

		// Begin the scene
		if( SUCCEEDED( hr = m_pD3DMDevice-&gt;BeginScene() ) ){
			// Draw Video Background
			m_pBackPlane-&gt;Draw();
			hr = m_pD3DMDevice-&gt;EndScene();
		}
		hr = m_pD3DMDevice-&gt;Present( NULL, NULL, NULL, NULL );
	}catch(...){
		OutputDebugString(L&quot;Exception in Render-Loop caught!\n&quot;);
		MessageBox(NULL,L&quot;Exception in Render-Loop!&quot;, L&quot;Error!&quot;, MB_OK | MB_ICONERROR);
		return E_FAIL;
	}
	CalculateFramerate();
	return hr;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1620986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1620986</guid><dc:creator><![CDATA[Sw00sh]]></dc:creator><pubDate>Wed, 26 Nov 2008 09:35:52 GMT</pubDate></item><item><title><![CDATA[Reply to Threads? on Wed, 26 Nov 2008 10:06:27 GMT]]></title><description><![CDATA[<p>Eine Threadklasse bauaen.<br />
Daten in diese Klasse packen<br />
Thread starten<br />
Zukylisch prüfen ob der Thread Daten gefunden hat.</p>
<p>Nur kann es ja nicht sein, dass Du für jeden Render Vorgang einen Thread startest...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621007</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 26 Nov 2008 10:06:27 GMT</pubDate></item><item><title><![CDATA[Reply to Threads? on Wed, 26 Nov 2008 10:36:49 GMT]]></title><description><![CDATA[<p>Da hast du sicherlich recht...</p>
<p>Also lasse ich das Matching in einem Thread laufen und schaue in Render() ob der Thread Daten liefert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621021</guid><dc:creator><![CDATA[Sw00sh]]></dc:creator><pubDate>Wed, 26 Nov 2008 10:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to Threads? on Wed, 26 Nov 2008 11:54:39 GMT]]></title><description><![CDATA[<p>Richtig. Ich würde evtl. diesen Testthread immer laufen lassen.</p>
<p>Hat er nichts zu tun, gibst Du ihm was zu tun. Sind Daten da, machst Du damit was Du denkst. Ansonsten gibst Du ihm den nächsten Job.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621054</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 26 Nov 2008 11:54:39 GMT</pubDate></item><item><title><![CDATA[Reply to Threads? on Wed, 26 Nov 2008 12:50:26 GMT]]></title><description><![CDATA[<p>Wenn ich mir mein Objekt mach, starte ich anschließend den Thread mit -&gt;run() (z.B).</p>
<p>Aber wie fütter ich den Thread mit den Daten aus Render()? Und wie teste ich ob Daten zur Verfügung stehen?</p>
<p>Danke und Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621105</guid><dc:creator><![CDATA[Sw00sh]]></dc:creator><pubDate>Wed, 26 Nov 2008 12:50:26 GMT</pubDate></item><item><title><![CDATA[Reply to Threads? on Wed, 26 Nov 2008 13:08:21 GMT]]></title><description><![CDATA[<p>Du kommunizierst über Events. Du benötigst 3 Events<br />
a. Bereit neuen Job zu übernehmen<br />
b. Starte Berechnung<br />
c. Ergebnisse sind fertig</p>
<p>a+c kann man evtl. kombinieren.</p>
<p>Die Daten übergibst Du in einem entsprechenden Speicher nur dann, wenn der Thread bereit ist Daten anzunehmen. Dann startest Du die Berechnung durch setzen des Events.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621122</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 26 Nov 2008 13:08:21 GMT</pubDate></item><item><title><![CDATA[Reply to Threads? on Wed, 26 Nov 2008 14:05:03 GMT]]></title><description><![CDATA[<p>Also mache ich mir die Events global verfügbar und guck ob ein Job laufen darf oder nicht?</p>
<p>Das Objekt matcher hat alle Daten, auch einen Pointer auf die Bilddaten</p>
<p>matcher = new MMRTTemplateMatching(m_iVideoImgWidth, m_iVideoImgHeight, sizeof(short), TEMP, (short*)m_pData);</p>
<p>Im Konstruktor starte ich dann den Thread... also</p>
<p>this-&gt;hThread = CreateThread(NULL, 0, matcher, NULL , 0 , &amp;this-&gt;dwThreadId);<br />
und mein event ist dann event_is_not_bussy</p>
<p>Jetzt mach ich in Render()</p>
<p>if(event_is_not_bussy)<br />
das dem Thread mach weiter<br />
if(event_thread_has_data)<br />
gibt mir die daten<br />
if(event_at_work)<br />
mach nix</p>
<p>Stimmt das so irgendwie?<br />
Wie bekomme ich ein Ergebnis aus dem Thread?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621167</guid><dc:creator><![CDATA[Sw00sh]]></dc:creator><pubDate>Wed, 26 Nov 2008 14:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Threads? on Thu, 27 Nov 2008 08:02:55 GMT]]></title><description><![CDATA[<p>Ok hab mich gestern bisschen doof angestellt <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="😃"
    /><br />
Nach ein bisschen schlafen habe ich es geschafft <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":-P"
      alt="😛"
    /></p>
<p>Danke für deine Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621574</guid><dc:creator><![CDATA[Sw00sh]]></dc:creator><pubDate>Thu, 27 Nov 2008 08:02:55 GMT</pubDate></item></channel></rss>