<?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[Struct an Thread übergeben | AfxBeginThread]]></title><description><![CDATA[<p>Hallo,<br />
hier mein Code:</p>
<pre><code class="language-cpp">const int THREAD_COUNT = my_data.size();
HANDLE *hThreads = new HANDLE[THREAD_COUNT];

my_worker_data passData;
passData.pParam		= this;

for(i=0; i&lt;THREAD_COUNT; i++)
{
	passData.tmpEvent	= my_data[i];
	passData.i			= i;

	CWinThread *pThread = ::AfxBeginThread(single_event_worker, &amp;passData);
	hThreads[i] = pThread-&gt;m_hThread;
}

::WaitForMultipleObjects(THREAD_COUNT,hThreads,TRUE,60000);

delete[] hThreads;
hThreads = NULL; 

	UINT CTestAPPDlg::single_event_worker(LPVOID pass)
	{
		my_worker_data* passData = (my_worker_data*) pass;

		CTestAPPDlg* pDlg = (CTestAPPDlg*) passData-&gt;pParam;
		pDlg-&gt;get_details(passData-&gt;tmpEvent);

		return 1;
	}
</code></pre>
<p>Das Programm soll viele Anfragen parallel bearbeiten und schmiert wegen diesem Teil ab. Ich denke, dass es an dem Pointer liegt, denn während ein neuer Thread die Daten von der Variable abfragen will, kann es ja passieren, dass die parent-Funktion schon wieder die Daten geändert hat.</p>
<p>Wie krieg ich das sauber gelöst?</p>
<p>Habs schon mit nem Array für die ganzen my_worker_data's versucht aber das hat auch nicht geklappt.</p>
<p>Grüße,<br />
Mikael</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194011/struct-an-thread-übergeben-afxbeginthread</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 01:19:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194011.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 Oct 2007 18:13:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Struct an Thread übergeben | AfxBeginThread on Tue, 02 Oct 2007 18:13:35 GMT]]></title><description><![CDATA[<p>Hallo,<br />
hier mein Code:</p>
<pre><code class="language-cpp">const int THREAD_COUNT = my_data.size();
HANDLE *hThreads = new HANDLE[THREAD_COUNT];

my_worker_data passData;
passData.pParam		= this;

for(i=0; i&lt;THREAD_COUNT; i++)
{
	passData.tmpEvent	= my_data[i];
	passData.i			= i;

	CWinThread *pThread = ::AfxBeginThread(single_event_worker, &amp;passData);
	hThreads[i] = pThread-&gt;m_hThread;
}

::WaitForMultipleObjects(THREAD_COUNT,hThreads,TRUE,60000);

delete[] hThreads;
hThreads = NULL; 

	UINT CTestAPPDlg::single_event_worker(LPVOID pass)
	{
		my_worker_data* passData = (my_worker_data*) pass;

		CTestAPPDlg* pDlg = (CTestAPPDlg*) passData-&gt;pParam;
		pDlg-&gt;get_details(passData-&gt;tmpEvent);

		return 1;
	}
</code></pre>
<p>Das Programm soll viele Anfragen parallel bearbeiten und schmiert wegen diesem Teil ab. Ich denke, dass es an dem Pointer liegt, denn während ein neuer Thread die Daten von der Variable abfragen will, kann es ja passieren, dass die parent-Funktion schon wieder die Daten geändert hat.</p>
<p>Wie krieg ich das sauber gelöst?</p>
<p>Habs schon mit nem Array für die ganzen my_worker_data's versucht aber das hat auch nicht geklappt.</p>
<p>Grüße,<br />
Mikael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376813</guid><dc:creator><![CDATA[mikael]]></dc:creator><pubDate>Tue, 02 Oct 2007 18:13:35 GMT</pubDate></item><item><title><![CDATA[Reply to Struct an Thread übergeben | AfxBeginThread on Tue, 02 Oct 2007 18:38:44 GMT]]></title><description><![CDATA[<p>Was willst du machen, mit den Thread parallel daten im Dialog anzeigen??</p>
<p>dAs ist nich gut...</p>
<p>mach einen Timer in deinem Dialog, welcher in einem best. Intervall deine Daten im Fenster aktualisiert, diesen sycronisierst du mit deinen Threade, welche irgendwas mit deinen daten machen!!</p>
<pre><code class="language-cpp">OnTimer(){

 //LOCK
 // Daten lesen und anzeigen
 //UNLOCK

}

ThreadFunc(....){

 //LOCK 
 daten berechnen
 // UNLOCK

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1376822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376822</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 02 Oct 2007 18:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to Struct an Thread übergeben | AfxBeginThread on Wed, 03 Oct 2007 10:31:22 GMT]]></title><description><![CDATA[<p>Nein, darum geht es nicht.<br />
Das Programm soll parallel über Curl mehrere HTTP/s-Requests senden.</p>
<p>Dafür muss ich der Threadfunktion den this-Pointer übergeben und die Url der Seite die abfragt werden soll.</p>
<p>Grüße,<br />
mikael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1377035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1377035</guid><dc:creator><![CDATA[mikael]]></dc:creator><pubDate>Wed, 03 Oct 2007 10:31:22 GMT</pubDate></item><item><title><![CDATA[Reply to Struct an Thread übergeben | AfxBeginThread on Thu, 04 Oct 2007 05:49:23 GMT]]></title><description><![CDATA[<p>Du übergibst allen erstellten Threads die Adresse des selben struct's, also arbeiten auch alle mit den selben Daten. Zur Lösung brauchst du erstens ein Array von my_worker_data-Objekten (für jeden Thread ein eigenes) und zweitens Zugriffssynchronisation (Critical Section o.ä.) wenn du mit den Dialog-Daten arbeiten willst.</p>
<p>(Randfrage: Was genau machen die Threads eigentlich mit deinem this-Objekt?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1377540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1377540</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 04 Oct 2007 05:49:23 GMT</pubDate></item><item><title><![CDATA[Reply to Struct an Thread übergeben | AfxBeginThread on Fri, 05 Oct 2007 11:35:38 GMT]]></title><description><![CDATA[<p>Ich konnte den this-Zeiger weglassen und zusammen mit dem vorgeschlagenen Array ging es dann. Hab es schon gestern hinbekommen aber vergessen zu schreiben.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378531</guid><dc:creator><![CDATA[mikael]]></dc:creator><pubDate>Fri, 05 Oct 2007 11:35:38 GMT</pubDate></item></channel></rss>