<?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[Methode an Thread übergeben]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse recorder mit den Methoden stream_control () und record (). Nun erzeuge ich zwei Objekte dieser Klasse (stream1 und stream2). Ich möchte nun, dass die Methode stream_control () (in der sich eine Endlosschleife befindet) jedes Objektes parallel ausgeführt wird.<br />
Hierfür möchte ich die Boost-Thread Library verwenden. Allerdings weiß ich nicht, wie ich eine Methode an den Thread-Konstruktor übergeben soll.</p>
<pre><code class="language-cpp">boost::thread thrd1 (stream1.stream_control ())
thrd1.join ();
// das selbe mit stream2
</code></pre>
<p>funktioniert leider nicht.</p>
<p>Kann mir hier jemand weiterhelfen oder einen besseren Designansatz nennen, der es ermöglicht mehrere Objekte und deren Methode parallel abarbeiten zu lassen?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203235/methode-an-thread-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 11:00:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203235.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Jan 2008 17:12:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Methode an Thread übergeben on Sun, 20 Jan 2008 17:12:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse recorder mit den Methoden stream_control () und record (). Nun erzeuge ich zwei Objekte dieser Klasse (stream1 und stream2). Ich möchte nun, dass die Methode stream_control () (in der sich eine Endlosschleife befindet) jedes Objektes parallel ausgeführt wird.<br />
Hierfür möchte ich die Boost-Thread Library verwenden. Allerdings weiß ich nicht, wie ich eine Methode an den Thread-Konstruktor übergeben soll.</p>
<pre><code class="language-cpp">boost::thread thrd1 (stream1.stream_control ())
thrd1.join ();
// das selbe mit stream2
</code></pre>
<p>funktioniert leider nicht.</p>
<p>Kann mir hier jemand weiterhelfen oder einen besseren Designansatz nennen, der es ermöglicht mehrere Objekte und deren Methode parallel abarbeiten zu lassen?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440027</guid><dc:creator><![CDATA[basti33]]></dc:creator><pubDate>Sun, 20 Jan 2008 17:12:03 GMT</pubDate></item><item><title><![CDATA[Reply to Methode an Thread übergeben on Sun, 20 Jan 2008 19:23:41 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">boost::thread thrd1(boost::bind(&amp;stream_klasse::stream_control, &amp;stream1));
thrd1.join ();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1440124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440124</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 20 Jan 2008 19:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to Methode an Thread übergeben on Mon, 21 Jan 2008 08:40:10 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Lösung.</p>
<p>Allerdings ist mir nicht ganz klar, was die boost::bind Funktion so genau macht. Kann mir vielleicht jemand kurz erklären, wie diese Funktion arbeitet, bzw. warum ich nicht einfach boost::thread thrd1 (objekt.methode ()) verwenden kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440344</guid><dc:creator><![CDATA[basti33]]></dc:creator><pubDate>Mon, 21 Jan 2008 08:40:10 GMT</pubDate></item><item><title><![CDATA[Reply to Methode an Thread übergeben on Mon, 21 Jan 2008 08:44:45 GMT]]></title><description><![CDATA[<p>Ich würde mal sagen, boost::thread erwartet einen Funktor oder eine normale Funktion als Thread-Funktion und keine Methode - und boost::bind baut sich aus einem Methodenzeiger und einem Objekt einen Funktor zusammen, den du dann weiterverwenden kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440347</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 21 Jan 2008 08:44:45 GMT</pubDate></item><item><title><![CDATA[Reply to Methode an Thread übergeben on Mon, 21 Jan 2008 08:45:43 GMT]]></title><description><![CDATA[<p>Weil &quot;objekt.methode()&quot; ein Aufruf von methode mit this == &amp;objekt ist, und der Rückgabewert dieses Aufrufs an den Konstruktor von boost::thread übergeben wird. Der möchte aber eigentlich lieber einen irgendwie gearteten Funktor haben, und keinen beliebigen Wert.</p>
<p>Die boost::bind-Funktion bindet (wie der Name andeutet) Parameter an Funktoren, um andere Funktoren zu erzeugen. Im Beispiel wird an den ersten Parameter einer Methode, die einen Parameter vom Typ stream_klasse* erwartet, ein Zeiger auf stream1 gebunden. So wird eine Methode erzeugt, die keine Parameter erwartet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440348</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 21 Jan 2008 08:45:43 GMT</pubDate></item><item><title><![CDATA[Reply to Methode an Thread übergeben on Mon, 21 Jan 2008 17:40:12 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Die boost::bind-Funktion bindet (wie der Name andeutet) Parameter an Funktoren, um andere Funktoren zu erzeugen. Im Beispiel wird an den ersten Parameter einer Methode, die einen Parameter vom Typ stream_klasse* erwartet, ein Zeiger auf stream1 gebunden. So wird eine Methode erzeugt, die keine Parameter erwartet.</p>
</blockquote>
<p>Danke für die Antwort. Allerdings ist mir das noch nicht so richtig klar <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=":confused:"
      alt="😕"
    /> . Kann vielleicht jemand ein kurzes Quellcodebeispiel posten oder mir einen Link nennen, wo das etwas genauer erklärt wird?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440808</guid><dc:creator><![CDATA[basti33]]></dc:creator><pubDate>Mon, 21 Jan 2008 17:40:12 GMT</pubDate></item><item><title><![CDATA[Reply to Methode an Thread übergeben on Mon, 21 Jan 2008 18:32:10 GMT]]></title><description><![CDATA[<p>Google scheint nicht dein Freund zu sein.<br />
Eine Suche nach &quot;boost bind&quot; findet als 1. Treffer die passende Doku:</p>
<p><a href="http://www.boost.org/libs/bind/bind.html" rel="nofollow">http://www.boost.org/libs/bind/bind.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440834</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 21 Jan 2008 18:32:10 GMT</pubDate></item><item><title><![CDATA[Reply to Methode an Thread übergeben on Mon, 21 Jan 2008 18:30:15 GMT]]></title><description><![CDATA[<p>Dort steht aber nur, wie man boost::bind verwendet! Ich möchte aber wissen, wie sich das theoretisch aufbaut, also eine etwas genauere Erklärung dessen, was ich von LordJaxom zitiert habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440842</guid><dc:creator><![CDATA[basti33]]></dc:creator><pubDate>Mon, 21 Jan 2008 18:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Methode an Thread übergeben on Mon, 21 Jan 2008 18:35:32 GMT]]></title><description><![CDATA[<p>Dann guck dir den Code an.<br />
Davon abgesehen ist es auch logisch.<br />
Es wird eine Instanz einer Klasse zurückgeliefert die die gebundenen Parameter speichert.<br />
Die dafür nötigen Klassen werden natürlich über einen Haufen Templates erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1440845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1440845</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 21 Jan 2008 18:35:32 GMT</pubDate></item></channel></rss>