<?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 klassen methode]]></title><description><![CDATA[<p>ich wollte einen boost::thread aus einer klasse heraus starten und diesem zur ausführung eine private methode der klasse zuweisen.</p>
<p>scheinbar hab ich hier aber etwas noch nicht richtig verstanden.</p>
<pre><code>void TcpClientSocket::RsvThread (){
....}

bool TcpClientSocket::Connect(){
       ......
       boost::thread thrd( &amp;TcpClientSocket::RsvThread );
}
</code></pre>
<p>wie bau ich so etwas in eine ordentliche klassenstruktur in c++?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204818/boost-thread-und-klassen-methode</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 16:07:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204818.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Feb 2008 11:37:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 11:37:02 GMT]]></title><description><![CDATA[<p>ich wollte einen boost::thread aus einer klasse heraus starten und diesem zur ausführung eine private methode der klasse zuweisen.</p>
<p>scheinbar hab ich hier aber etwas noch nicht richtig verstanden.</p>
<pre><code>void TcpClientSocket::RsvThread (){
....}

bool TcpClientSocket::Connect(){
       ......
       boost::thread thrd( &amp;TcpClientSocket::RsvThread );
}
</code></pre>
<p>wie bau ich so etwas in eine ordentliche klassenstruktur in c++?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451117</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Thu, 07 Feb 2008 11:37:02 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 11:47:47 GMT]]></title><description><![CDATA[<p>Meinem zugegebenermassen bescheidenen Wissnsstand nach laeuft da irgendwas mit boost::bind, um aus der Methode und dem Objekt, fur das sie aufgerufen wird, einen normalen Funktor zu machen, den der thread akzeptiert. Ueber die Suchfunktion solltest du fuendig werden, Fragen in der Art tauchen hier im Forum alle paar Wochen wieder auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451130</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 07 Feb 2008 11:47:47 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 11:55:42 GMT]]></title><description><![CDATA[<p>das problem ist, dass eine memberfunktion einen this-zeiger braucht, also ein konkretes objekt, für das sie aufgerufen wird. boost::bind ist hier sehr flexibel und erkennt automatisch deine memberfunktion, du musst sie dann nur mehr an ein konkretes objekt binden:</p>
<pre><code class="language-cpp">#include &lt;boost/thread&gt;
#include &lt;boost/bind&gt;

struct Foo
{
   void bar ();
};

//...
Foo instance;
boost::thread t (boost::bind (&amp;Foo::bar, &amp;instance));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1451140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451140</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 07 Feb 2008 11:55:42 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 11:59:56 GMT]]></title><description><![CDATA[<p>hm...<br />
naja ich hab es so probiert, weil ich mir so etwas schon gedacht habe:</p>
<pre><code>boost::thread thrd( boost::bind( &amp;TcpClientSocket::RsvThread, this ) );
</code></pre>
<p>aber das mit der instance klappt so wohl nicht.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451144</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Thu, 07 Feb 2008 11:59:56 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 12:08:57 GMT]]></title><description><![CDATA[<p>ist <code>this</code> auch vom Typ <code>TcpClientSocket*</code> in deinem beispiel?</p>
<p>ansonsten mal die explizite version probieren:</p>
<pre><code class="language-cpp">void create_thead (TcpClientSocket&amp; socket)
{
   boost::thread t (boost::bind&lt;void&gt; (boost::mem_fn(&amp;TcpClientSocket::RsvThread), boost::ref(socket));
}
</code></pre>
<p>ach: statt &quot;klappt nicht&quot; bitte fehlermeldungen angeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451150</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 07 Feb 2008 12:08:57 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 12:26:35 GMT]]></title><description><![CDATA[<p>queer_boy schrieb:</p>
<blockquote>
<p>ist <code>this</code> auch vom Typ <code>TcpClientSocket*</code> in deinem beispiel?</p>
</blockquote>
<p>Da die Funktion die den Thread startet in seinem Fall eine Methode von TcpClientSocket ist, wird this wohl vom richtigen typ sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451165</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 07 Feb 2008 12:26:35 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 12:45:30 GMT]]></title><description><![CDATA[<p>also ich poste mal den code dazu:</p>
<pre><code>void TcpClientSocket::RsvThread (int s){
  char * buffer = (char*) malloc (BUF);
  int size;
    long save_fd;
    do { 
      save_fd = fcntl( s, F_GETFL );
      save_fd |= O_NONBLOCK;
      fcntl( s, F_SETFL, save_fd );
      //lock_type lk( io_mutex );  
      	size = recv(s, buffer, BUF-1, 0);
	  //lk.unlock();
      	if( size &gt; 0){
         	buffer[size] = '\0';
      		printf (&quot;Nachricht erhalten: %s\n&quot;, buffer);
      		}
      sleep(1);
      } while (1);
}

bool TcpClientSocket::Connect(){

  	if ((create_socket = socket (AF_INET, SOCK_STREAM, 0)) &gt; 0)
    	printf (&quot;Socket wurde angelegt\n&quot;);

  	address.sin_family = AF_INET;
  	address.sin_port = htons (portnr);
  	inet_aton (ipadr.c_str(), &amp;address.sin_addr);

	if (connect ( create_socket, (struct sockaddr *) &amp;address, sizeof (address)) == 0){
    	printf (&quot;Verbindung mit dem Server (%s) hergestellt\n&quot;, inet_ntoa (address.sin_addr));
    	info._socket = create_socket;
    	//io_mutex = new boost::mutex();
    	boost::thread thrd( boost::bind( &amp;TcpClientSocket::RsvThread, this, create_socket) );
    	//boost::thread (boost::bind&lt;void&gt; (boost::mem_fn(&amp;TcpClientSocket::RsvThread), boost::ref(this) ,boost::ref(create_socket)));
    	//boost::thread thrd( &amp;this.RsvThread() );   
		return true;
	}
	return false;
}
</code></pre>
<p>der fehlercode:</p>
<blockquote>
<p>/usr/lib/gcc/i486-linux-gnu/4.1.3/../../../../lib/crt1.o: In function <code>_start': (.text+0x18): undefined reference to</code>main'<br />
./clientsocket.o: In function <code>TcpClientSocket::Connect()': /home/arnulf/workspace/clientsocket/Debug/../clientsocket.cpp:43: undefined reference to</code>boost::thread::thread(boost::function0&lt;void, std::allocator<a href="boost::function_base" rel="nofollow">boost::function_base</a> &gt; const&amp;)'<br />
/home/arnulf/workspace/clientsocket/Debug/../clientsocket.cpp:46: undefined reference to `boost::thread::~thread()'<br />
collect2: ld gab 1 als Ende-Status zurück<br />
make: *** [clientsocket] Fehler 1</p>
</blockquote>
<p>ich weiß es gibt noch keine ausstiegsbedinung und vieles mehr ist ja noch nicht fertig.</p>
<p>wie ich dann die boost::mutex da rein bringe ist eine andere frage.<br />
ich hab alles mögliche probiert was mir so eingefallen ist.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451173</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Thu, 07 Feb 2008 12:45:30 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 12:47:04 GMT]]></title><description><![CDATA[<p>Ich sehe hier keinerlei Compilerfehler, nur einen Linkerfehler. Eigentlich hast Du nur vergessen, die boost::thread-Bibliothek mitzulinken.</p>
<p>EDIT: Eine main-Funktion fehlt offensichtlich auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451174</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 07 Feb 2008 12:47:04 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 12:59:30 GMT]]></title><description><![CDATA[<p>ok ich bin ein dödel.<br />
hab eclipse nicht gesagt wo die boost libs liegen.</p>
<p>man das kommt davon wenn man managed make verwendet.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451177</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Thu, 07 Feb 2008 12:59:30 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 12:56:28 GMT]]></title><description><![CDATA[<p>Neben den Includes braucht boost::thread auch noch eine Bibliothek - die muss beim gcc mit -l dazugebunden werden. Allerdings weiss ich den Namen der Bibliothek nicht auswendig, da der von einigen Faktoren wie der Compilerversion abhängt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451181</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 07 Feb 2008 12:56:28 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 13:00:33 GMT]]></title><description><![CDATA[<p>pthread soweit ich weiß.<br />
habs jedenfalls dazu gelinkt.<br />
lg und danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451184</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Thu, 07 Feb 2008 13:00:33 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 13:03:27 GMT]]></title><description><![CDATA[<p>autolink geht bei boost AFAIK nur mit msvc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451190</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 07 Feb 2008 13:03:27 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 13:05:46 GMT]]></title><description><![CDATA[<p>Funktioniert auch beim BCB.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451191</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 07 Feb 2008 13:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 13:36:32 GMT]]></title><description><![CDATA[<p>Nein, nicht pthread, sondern boost::thread...<br />
boost::thread selbst braucht wiederum pthreads, ja, aber &quot;undefined reference to `boost::thread::~thread()`&quot; kommt sicher nicht aus einer C-Bibliothek <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451208</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 07 Feb 2008 13:36:32 GMT</pubDate></item><item><title><![CDATA[Reply to boost::thread und klassen methode on Thu, 07 Feb 2008 19:42:17 GMT]]></title><description><![CDATA[<p>Wäre schon eine komische C-Bibliothek <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1451502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1451502</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 07 Feb 2008 19:42:17 GMT</pubDate></item></channel></rss>