<?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 in Klassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe hier ein Problem mit mehreren Threads in einer Klasse.</p>
<p>Klasse &quot;Kamera&quot; hat zwei Threads. Ein Thread nimmt ein Bild über Firewire auf,<br />
nur einmal und geht dann mit goto an den Threadstart und warte mit<br />
WaitForSingleObject auf das nächste CaptureEvent. Ein zweiter Thread löst in<br />
einer Schleife immer ein CaptureEvent aus, womit der erste Thread wieder ein<br />
Bild aufnimmt. Um auf die verschiedenen Handles und Variablen zuzugreifen<br />
verwende ich Pointer. Das heißt ich habe keine Membervariable</p>
<p>HANDLE CAMERA;</p>
<p>sondern</p>
<p>HANDLE *ptrCamera;</p>
<p>damit ich auch von aussen auf den Inhalt zugreifen kann. Das Problem ist jetzt,<br />
dass wenn ich den ersten Thread starte, welcher immer nur ein Bild aufnimmt,<br />
dann hat dieser immer die richtigen Werte an den gespeicherten Adressen. Wenn<br />
ich aber den Thread mit der Captureschleife starte, dann ändert sich ständig<br />
der Inhalt an den Stellen der gespeicherten Adressen in diesem Thread<br />
(Schleifenthread). Ich brauche auch nicht den EinzelCaptureThread starten, dass<br />
Ergebnis bleibt das gleiche.</p>
<p>Hab schon alles durchgesucht und leider nichts zu diesem speziellen Fall<br />
gefunden. Hab das Gefühl das es etwas mit dem Stack zu tun hat, aber ich weiß<br />
nicht wo ich anfangen soll zu suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220003/threads-in-klassen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 07:14:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220003.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Aug 2008 18:37:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads in Klassen on Sun, 10 Aug 2008 18:37:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe hier ein Problem mit mehreren Threads in einer Klasse.</p>
<p>Klasse &quot;Kamera&quot; hat zwei Threads. Ein Thread nimmt ein Bild über Firewire auf,<br />
nur einmal und geht dann mit goto an den Threadstart und warte mit<br />
WaitForSingleObject auf das nächste CaptureEvent. Ein zweiter Thread löst in<br />
einer Schleife immer ein CaptureEvent aus, womit der erste Thread wieder ein<br />
Bild aufnimmt. Um auf die verschiedenen Handles und Variablen zuzugreifen<br />
verwende ich Pointer. Das heißt ich habe keine Membervariable</p>
<p>HANDLE CAMERA;</p>
<p>sondern</p>
<p>HANDLE *ptrCamera;</p>
<p>damit ich auch von aussen auf den Inhalt zugreifen kann. Das Problem ist jetzt,<br />
dass wenn ich den ersten Thread starte, welcher immer nur ein Bild aufnimmt,<br />
dann hat dieser immer die richtigen Werte an den gespeicherten Adressen. Wenn<br />
ich aber den Thread mit der Captureschleife starte, dann ändert sich ständig<br />
der Inhalt an den Stellen der gespeicherten Adressen in diesem Thread<br />
(Schleifenthread). Ich brauche auch nicht den EinzelCaptureThread starten, dass<br />
Ergebnis bleibt das gleiche.</p>
<p>Hab schon alles durchgesucht und leider nichts zu diesem speziellen Fall<br />
gefunden. Hab das Gefühl das es etwas mit dem Stack zu tun hat, aber ich weiß<br />
nicht wo ich anfangen soll zu suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562356</guid><dc:creator><![CDATA[Superior]]></dc:creator><pubDate>Sun, 10 Aug 2008 18:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to Threads in Klassen on Sun, 10 Aug 2008 22:11:34 GMT]]></title><description><![CDATA[<p>Also ich habe es hinbekommen. Der Grund für das ständige Ändern der<br />
Speicherbereiche war, dass ich zwar den Zeiger auf mein Klassenobjekt übergeben<br />
habe, aber dieser Zeiger und der Speicherbereich anscheinend vor der Übergabe<br />
kopiert wurden. Ich habe es jetzt so gelöst das ich eine weitere Membervariable<br />
hinzugefügt habe und dieser im Konstruktor meiner Klasse gleich den Zeiger auf<br />
mein Objekt übergebe. Anstatt beim erzeugen des Threads dann den Zeiger auf<br />
&quot;this&quot; zu übergeben, übergebe ich den Inhalt in der genannten Membervariable.<br />
Damit habe ich die richtige Startadresse meines Objektes im Thread.</p>
<p>Das wird wahrscheinlich noch nicht die beste Lösung sein. Vielleicht weiß jemand<br />
eine bessere Idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562417</guid><dc:creator><![CDATA[Superior]]></dc:creator><pubDate>Sun, 10 Aug 2008 22:11:34 GMT</pubDate></item><item><title><![CDATA[Reply to Threads in Klassen on Mon, 11 Aug 2008 16:33:25 GMT]]></title><description><![CDATA[<p>Habe die Problemstelle erkannt. Ich hatte, komischer Weise, in meinem Code eine<br />
Instanz meiner Klasse erzeugt und nicht initialisiert. Diese wurde dann<br />
anscheinen auch auf den Stack geschmissen und ich habe immer mit dieser<br />
weitergearbeitet. Hab das herausgefunden, nachdem ich in den Kontruktor der<br />
Klasse debugged habe und dann per Callstack gesehen hab, welche Stelle den Fehler<br />
verursacht.</p>
<p>Also sollte jemand zufälliger Weise auf diesen Beitrag stoßen:<br />
<strong>DANN SCHAU DIR ERST GENAU DEINEN CODE AN UND VERSTEHE AUCH WAS DU MACHST.</strong></p>
<p>Und tschüss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562793</guid><dc:creator><![CDATA[Superior]]></dc:creator><pubDate>Mon, 11 Aug 2008 16:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to Threads in Klassen on Mon, 11 Aug 2008 17:36:36 GMT]]></title><description><![CDATA[<blockquote>
<p>DANN SCHAU DIR ERST GENAU DEINEN CODE AN UND VERSTEHE AUCH WAS DU MACHST.</p>
</blockquote>
<p>Was für eine Schlussfolgerung. Die sollte an allen Schulen auf der Welt gepredigt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562823</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Mon, 11 Aug 2008 17:36:36 GMT</pubDate></item></channel></rss>