<?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 funktion mit Parameter übergeben]]></title><description><![CDATA[<p>Hallo</p>
<p>ich meiner main will ich einen thread erstellen und diesem eine funktion mit parameter übergeben.</p>
<p>Test eine Objekt der Klasse a.<br />
nun will ich mit dem Thread eine funktion des Objektes,der Klasse a, aufrufen.</p>
<p>Nur wie</p>
<pre><code class="language-cpp">void Package(a obj)
{
......
}

int _tmain(int argc, _TCHAR* argv[])
{	
...

	a test;

	boost::thread t(Package(test));

...
</code></pre>
<p>Doch leider klappt der aufruf nicht sobald ich parameter übergebe.</p>
<p>Wäre nett wenn mir jemand helfen könnte.</p>
<p>Ich will quasi auf ein globales Objekt mit mehreren Threads zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274716/boost-thread-funktion-mit-parameter-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 08:45:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274716.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 01 Oct 2010 10:55:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost::thread funktion mit Parameter übergeben on Fri, 01 Oct 2010 11:26:47 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich meiner main will ich einen thread erstellen und diesem eine funktion mit parameter übergeben.</p>
<p>Test eine Objekt der Klasse a.<br />
nun will ich mit dem Thread eine funktion des Objektes,der Klasse a, aufrufen.</p>
<p>Nur wie</p>
<pre><code class="language-cpp">void Package(a obj)
{
......
}

int _tmain(int argc, _TCHAR* argv[])
{	
...

	a test;

	boost::thread t(Package(test));

...
</code></pre>
<p>Doch leider klappt der aufruf nicht sobald ich parameter übergebe.</p>
<p>Wäre nett wenn mir jemand helfen könnte.</p>
<p>Ich will quasi auf ein globales Objekt mit mehreren Threads zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960011</guid><dc:creator><![CDATA[free118]]></dc:creator><pubDate>Fri, 01 Oct 2010 11:26:47 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::thread funktion mit Parameter übergeben on Fri, 01 Oct 2010 12:56:32 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p><a href="http://www.boost.org/doc/libs/1_43_0/doc/html/thread/thread_management.html#thread.thread_management.thread" rel="nofollow">http://www.boost.org/doc/libs/1_43_0/doc/html/thread/thread_management.html#thread.thread_management.thread</a></p>
<p>Dich dürfte dort &quot;Thread Constructor with arguments&quot; interessieren.</p>
<p>Was willst du denn genau machen?<br />
Sollen die Threads uaf ein und das selbe Objekt zugreifen oder reicht eine Kopie?</p>
<p>_Sascha_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960058</guid><dc:creator><![CDATA[_Sascha_]]></dc:creator><pubDate>Fri, 01 Oct 2010 12:56:32 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::thread funktion mit Parameter übergeben on Fri, 01 Oct 2010 12:52:56 GMT]]></title><description><![CDATA[<p>Hallo,<br />
also ich will, dass zur Laufzeit auf genau ein Objekt mit mehreren Threads zugegriffen wird.<br />
Z.B. ein Thread fügt dem Objekt daten hinzu.<br />
Ein anderer nimmt diese Daten (oder bereits vorher entstandene) und verarbeitet diese.</p>
<p>Also z.B. ein Thread schreibt Daten in eine Liste des Objekts.</p>
<p>Ein anderer thread: sobald daten existieren etwas mit ihnen macht aber weiterhin neue daten entstehen können.</p>
<p>Ich weiß nicht, aber vllt sowas wie Singleton mit mehreren Unterthreads.</p>
<p>Zur zeit läuft in meinem Projekt alles nacheinader ab. In zukunft sollen die entstandenen Daten direkt bearbeitet werden. Und nicht erst nachdem alle daten entstanden sind. Denn es ist nicht bekannt wie viele daten es gibt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960069</guid><dc:creator><![CDATA[free118]]></dc:creator><pubDate>Fri, 01 Oct 2010 12:52:56 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::thread funktion mit Parameter übergeben on Fri, 01 Oct 2010 12:50:16 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wenn du das mit der Parameterübergabe richtig hin bekommen hast, solltest du auch darauf achten dass du den Threads Zeiger auf das objekt gibst.</p>
<p>Des weiteren solltest du auch die Threads synchronisieren z.B. mit Mutexen oder Critical sections, dass nicht zwei Threads gleichzeitig das Objekt bearbeiten.</p>
<p>_Sascha_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960076</guid><dc:creator><![CDATA[_Sascha_]]></dc:creator><pubDate>Fri, 01 Oct 2010 12:50:16 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::thread funktion mit Parameter übergeben on Fri, 01 Oct 2010 13:57:21 GMT]]></title><description><![CDATA[<p>free118 schrieb:</p>
<blockquote>
<p>Hallo</p>
<p>ich meiner main will ich einen thread erstellen und diesem eine funktion mit parameter übergeben.</p>
<p>Test eine Objekt der Klasse a.<br />
nun will ich mit dem Thread eine funktion des Objektes,der Klasse a, aufrufen.</p>
<p>Nur wie</p>
<pre><code class="language-cpp">void Package(a obj)
{
......
}

int _tmain(int argc, _TCHAR* argv[])
{	
...
	
	a test;
	
	boost::thread t(Package(test));

...
</code></pre>
<p>Doch leider klappt der aufruf nicht sobald ich parameter übergebe.</p>
<p>Wäre nett wenn mir jemand helfen könnte.</p>
<p>Ich will quasi auf ein globales Objekt mit mehreren Threads zugreifen.</p>
</blockquote>
<p>Beides aus dem Stehgreif und ungetestet, kann sein dass ich ein paar Kleinigkeiten übersehen habe/Tippfehler etc.:</p>
<p>a)</p>
<pre><code class="language-cpp">void Package(a obj)
{
// ...
}

int _tmain(int argc, _TCHAR* argv[])
{	
// ...

	a test;

	boost::thread t(boost::bind(&amp;Package, test));

// ...
</code></pre>
<p>b)</p>
<pre><code class="language-cpp">class PackageFunctor
{
public:
    typedef void result_type;

    explicit PackageFunctor(a obj) : m_obj(obj)
    {
    }

    void operator ()()
    {
        // ...
    }
private:
    a m_obj;
};

int _tmain(int argc, _TCHAR* argv[])
{	
// ...

	a test;

	boost::thread t(PackageFunctor(test));

// ...
</code></pre>
<p>In beiden Fällen wird &quot;test&quot; kopiert, d.h. du musst beachten was _Sascha_ geschrieben hat (-&gt; Zeiger übergeben).<br />
Die nötige Änderung ist in meinem Beispiel *nicht* enthalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960130</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 01 Oct 2010 13:57:21 GMT</pubDate></item></channel></rss>