<?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[boost::thread und eine Camera]]></title><description><![CDATA[<p>Wir haben eine Camera von VRMagic und wollen diese zur Bilderkennung einsetzen. Ausgehend von BeispielCode von VRMagic haben wir ein kleines Programm geschrieben, welches 60 Bilder pro Sekunde abholt. Es funktioniert wunderbar.<br />
Nun haben wir dieses Programm als Modul in unser Framework integriert. Das Modul holt 60 mal pro Sekunde ein Bild ab und übergibt es anderen Modulen zur Weiterverarbeitung. Alle Module laufen in einem eigenen boost::thread. Nun schafft dieses CameraModul auf einmal aber nur noch 7 Bilder pro Sekunde und der Prozessor läuft auf 100%, auch wenn sonst kein anderes Modul aktiv ist.<br />
Wir tappen völlig im Dunkeln an was das liegen könnte. Haben die boost::threads irgendwelchen Einfluss auf das ganze? Für jegliche Hinweise die zum Ergreifen des Täters führen bin ich sehr dankbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258778/boost-thread-und-eine-camera</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 23:08:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258778.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Jan 2010 00:15:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost::thread und eine Camera on Fri, 15 Jan 2010 00:15:41 GMT]]></title><description><![CDATA[<p>Wir haben eine Camera von VRMagic und wollen diese zur Bilderkennung einsetzen. Ausgehend von BeispielCode von VRMagic haben wir ein kleines Programm geschrieben, welches 60 Bilder pro Sekunde abholt. Es funktioniert wunderbar.<br />
Nun haben wir dieses Programm als Modul in unser Framework integriert. Das Modul holt 60 mal pro Sekunde ein Bild ab und übergibt es anderen Modulen zur Weiterverarbeitung. Alle Module laufen in einem eigenen boost::thread. Nun schafft dieses CameraModul auf einmal aber nur noch 7 Bilder pro Sekunde und der Prozessor läuft auf 100%, auch wenn sonst kein anderes Modul aktiv ist.<br />
Wir tappen völlig im Dunkeln an was das liegen könnte. Haben die boost::threads irgendwelchen Einfluss auf das ganze? Für jegliche Hinweise die zum Ergreifen des Täters führen bin ich sehr dankbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1839080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839080</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Fri, 15 Jan 2010 00:15:41 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Fri, 15 Jan 2010 00:40:27 GMT]]></title><description><![CDATA[<p>Wie viele Threads?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1839081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839081</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Fri, 15 Jan 2010 00:40:27 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Fri, 15 Jan 2010 07:44:12 GMT]]></title><description><![CDATA[<p>Eine weitere wichtige Frage ist:</p>
<p>Gibt es noch andere Threads? Wenn ja, was tun sie?</p>
<p>Gibt es Sync-Punkte, CritSects, andere Dinge, die den Prozess aufhalten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1839100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839100</guid><dc:creator><![CDATA[It0101]]></dc:creator><pubDate>Fri, 15 Jan 2010 07:44:12 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Fri, 15 Jan 2010 11:16:12 GMT]]></title><description><![CDATA[<p>Es gibt bis zu 20 Threads (Module). Allerdings haben wir zum Test die meisten abgeschaltet. Diese Module kommunizieren miteinander über Puffer (Producer-Konsumer). Das KameraModul wartet z.B. auf den Takt, der von einem externen Microcontrollerboard, welcher uns SensorDaten (Ulraschallabstand, Geschwindigkeit, usw.) liefert. Es nutzt einfach aus, dass diese Daten vom Microcontrollerboard genau im 1/60 Sekundentakt kommen. Es ruft also am Modul das die SensorDaten erzeugt an einer boost::condition_variable_any einfach wait() auf. Der Thread schläft also bis SensorDaten eintreffen und sollte dann passend zu den Daten ein Foto machen.<br />
Hier ist der Kode zum Modul, von dem alle Module abgeleitet sind: <a href="http://codepad.org/lBGbcbNS" rel="nofollow">http://codepad.org/lBGbcbNS</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1839209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839209</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Fri, 15 Jan 2010 11:16:12 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Mon, 18 Jan 2010 20:27:42 GMT]]></title><description><![CDATA[<p>Also ich hab da so einen Vermutung: Die Camera hat ihren eigenen Takt und ist bisher Software getriggert. Das heißt wir rufen eine Methode auf um ein Foto zu schießen, das Belichten dauert 8,5ms. Danach können wir das Bild abholen.<br />
Im Prinzip ist das doch ein Systemaufruf? Kann es sein dass der Kamera-Thread beim Warten auf das Bild einfach unterbrochen wird und andere Threads zum Zuge kommen? Ohne Framework haben wir eine Wartezeit von fast immer 10ms. Im Framework zwischen 10-50ms und schaffen nur ca. 7 Bilder pro Sekunde?<br />
Bei boost::thread gibt es ja Unterbrechungspunkte: boost::thread_interrupted<br />
Gibt es auch etwas um einen Thread explizit ununterbrechbar (für einen Schleifendurchlauf) zu machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1840996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1840996</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Mon, 18 Jan 2010 20:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Tue, 19 Jan 2010 11:59:38 GMT]]></title><description><![CDATA[<p>Nicht wenn du ein Betriebssystem mit preemptiven Multitasking hast. Das soll ja gerade immer die Prozesse/Threads unterbrechen. Vielleicht hilft es was an den Prioritäten zu schrauben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841320</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Tue, 19 Jan 2010 11:59:38 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Tue, 19 Jan 2010 12:47:40 GMT]]></title><description><![CDATA[<p>Natürlich sollen alle Threads mal dran kommen. Soweit ich weiß werden boost::threads aber nur an ganz bestimmten Punkten unterbrochen, z.B. sleep oder wait.<br />
Ich vermute aber es findet ein Threadwechsel statt an einer Stelle wo ich es nicht brauchen kann, nämlich da wo mein Modul auf die Camera zugreift und eben 8,5ms Belichtung abwarten muss. Kann man dafür sorgen dass es in diesem Block nicht unterbrochen wird?<br />
Würde das höherprisrisieren etwas bringen?</p>
<p>Generell ist das ein Problem, da wir ein Regelungssystem bauen einen genauen Takt (1/60 Sekunden) brauchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841348</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Tue, 19 Jan 2010 12:47:40 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Wed, 20 Jan 2010 08:10:10 GMT]]></title><description><![CDATA[<p>Ich glaube diese Unterbrechungspunkte beziehen sich auf Unterbrechungen durch den User. Das Betriebsystem ist halt davon nicht betroffen. Soll es ja wie gesagt auch nicht. Wenn du das wirklich so genau brauchst, dann nimm ein Echtzeitbetriebssystem. Die Dinger sind berechenbar.</p>
<p>Höherpriorisieren sorgt unter Umständen dafür, daß der Thread nach einer Unterbrechung schneller wieder drankommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841791</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Wed, 20 Jan 2010 08:10:10 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Wed, 20 Jan 2010 08:15:03 GMT]]></title><description><![CDATA[<p>Warum nimmt die Kamera nicht einfach ein Bild auf und meldet sich dann wenn sie fertig ist (bei den Interessenten)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841792</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Wed, 20 Jan 2010 08:15:03 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Wed, 20 Jan 2010 11:45:38 GMT]]></title><description><![CDATA[<p>Tyrdal schrieb:</p>
<blockquote>
<p>Warum nimmt die Kamera nicht einfach ein Bild auf und meldet sich dann wenn sie fertig ist (bei den Interessenten)?</p>
</blockquote>
<p>Die Kamera kann man Softwaretriggern, Freerunningmode und Hardwaretriggern. Wenn man sie Hardwaretriggert könnte man das so machen. Aber wie kann sie sich melden??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841916</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Wed, 20 Jan 2010 11:45:38 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Wed, 20 Jan 2010 12:15:32 GMT]]></title><description><![CDATA[<p>Kommt auf deine Software an. Ich programmiere gerade was mit Qt, da gibts bspw. den Signal/Slot Mechanismus um Ereignisse zu melden. Du könntest aber auch ne Threadbedingung nutzen (boost::condition_variable).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841939</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Wed, 20 Jan 2010 12:15:32 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Wed, 20 Jan 2010 12:32:19 GMT]]></title><description><![CDATA[<p>Tyrdal schrieb:</p>
<blockquote>
<p>Kommt auf deine Software an. Ich programmiere gerade was mit Qt, da gibts bspw. den Signal/Slot Mechanismus um Ereignisse zu melden. Du könntest aber auch ne Threadbedingung nutzen (boost::condition_variable).</p>
</blockquote>
<p>Aber das wäre doch wieder innerhalb des Threads der die Camera anspricht, deshalb wird das doch nicht zeitlich berechenbarer!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841951</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Wed, 20 Jan 2010 12:32:19 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Wed, 20 Jan 2010 13:48:00 GMT]]></title><description><![CDATA[<p>Zeitlich berechenbar wirds sowieso nur in einem Echtzeitsystem. Evtl. wirds aber schnell genug.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842012</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Wed, 20 Jan 2010 13:48:00 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Wed, 20 Jan 2010 14:06:33 GMT]]></title><description><![CDATA[<p>Kannst du mir mal ein Beispielkode zeigen oder aufzeigen wie du dir das vorstellst? Die Kamera ist ja ein USB Gerät.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842019</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Wed, 20 Jan 2010 14:06:33 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und eine Camera on Wed, 20 Jan 2010 14:55:37 GMT]]></title><description><![CDATA[<p>Code direkt nicht, da ich eh nicht weiß wie deine API aussieht.</p>
<p>Wenn du ein Bild haben fragst du ja die Kamera und die signalisiert dir irgendwann, daß ein neues da ist, richtig? Wenn ja, dann lass das Ganze doch in nem eigenen Thread laufen und pack das Bild in einen Zwischepuffer. Der andere Programmteil holt sich dann immer die Bilder aus dem Puffer. =&gt; Wenn der Puffer größer als ein Bild ist haste ein Producer-Consumer-System. Wenns nur ein Bild ist, läßt du den abholenden Thread eben auf das Eintreten der Bedingung warten (die der Kamerathread natürchlich setzen muß).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842046</guid><dc:creator><![CDATA[Tyrdal]]></dc:creator><pubDate>Wed, 20 Jan 2010 14:55:37 GMT</pubDate></item></channel></rss>