<?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[Asynchrone Funktionsaufrufe]]></title><description><![CDATA[<p>Hi,</p>
<p>ich suche gerade in Boost so was wie QtConcurrent::run von QT. Ich möchte asynchron Funktionen aufrufen, die in einem eigenen Thread gestartet werden ohne mich um Threadmgmt. zu kümmern. Das Ergebnis soll mir dann z.B. über ein Signal mitgeteilt werden.</p>
<p>&quot;Asynchronous Function Call&quot; und Konsorten führten mich zu boost::asio, was aber bei den ganzen Beispielen ständig mit TCP/IP oder UDP zu tun hat und anscheinend nicht für meine Zwecke dienlich ist.</p>
<p>Gibt es so was? Oder ist boost::thread weniger überladen als die Thread-Variante in QT (, die man nämlich erst mit einem Worker verbinden muss und zahlreiche Rand-Signale erstellen muss), sodass es in boost keine Existenzberechtigung für so was gibt?</p>
<p>Ich könnt mir jetzt selbst was zusammenfriemeln, aber ich frage lieber nach, um sicherzugehen, dass ich auch wirklich nicht etwas unnötig Ineffizientes baue.</p>
<p>Herzlichen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/306311/asynchrone-funktionsaufrufe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 05:25:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306311.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Jul 2012 17:20:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Asynchrone Funktionsaufrufe on Tue, 24 Jul 2012 17:20:53 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich suche gerade in Boost so was wie QtConcurrent::run von QT. Ich möchte asynchron Funktionen aufrufen, die in einem eigenen Thread gestartet werden ohne mich um Threadmgmt. zu kümmern. Das Ergebnis soll mir dann z.B. über ein Signal mitgeteilt werden.</p>
<p>&quot;Asynchronous Function Call&quot; und Konsorten führten mich zu boost::asio, was aber bei den ganzen Beispielen ständig mit TCP/IP oder UDP zu tun hat und anscheinend nicht für meine Zwecke dienlich ist.</p>
<p>Gibt es so was? Oder ist boost::thread weniger überladen als die Thread-Variante in QT (, die man nämlich erst mit einem Worker verbinden muss und zahlreiche Rand-Signale erstellen muss), sodass es in boost keine Existenzberechtigung für so was gibt?</p>
<p>Ich könnt mir jetzt selbst was zusammenfriemeln, aber ich frage lieber nach, um sicherzugehen, dass ich auch wirklich nicht etwas unnötig Ineffizientes baue.</p>
<p>Herzlichen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235327</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 24 Jul 2012 17:20:53 GMT</pubDate></item><item><title><![CDATA[Reply to Asynchrone Funktionsaufrufe on Tue, 24 Jul 2012 17:36:15 GMT]]></title><description><![CDATA[<p>Du meinst sowas?</p>
<pre><code class="language-cpp">#include &lt;thread&gt;

template &lt;typename F, typename ReadyHandler&gt;
void async_call(F f, ReadyHandler ready_handler)
{
  std::thread([f, ready_handler] { f(); ready_handler(); }).detach();
}

void foo()
{
  std::cout &lt;&lt; &quot;Working...\n&quot;;
  std::this_thread::sleep_for(std::chrono::seconds(1));
}

void handler()
{
  std::cout &lt;&lt; &quot;Done.\n&quot;;
}

int main()
{
  async_call(foo, handler);
  std::this_thread::sleep_for(std::chrono::seconds(2));
}
</code></pre>
<p>Finde ich aber nicht besonders schön.. sag mal was genau du machen willst. <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/2235331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235331</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 24 Jul 2012 17:36:15 GMT</pubDate></item><item><title><![CDATA[Reply to Asynchrone Funktionsaufrufe on Tue, 24 Jul 2012 17:38:30 GMT]]></title><description><![CDATA[<p>Ich kenne Qt nicht gut genug, aber deine Beschreibung klingt mir sehr nach den Futures und Promises aus C++11. Diese sind mWn einer der wenigen Teile der C++11-Threads, die es so in Boost nicht gibt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> .</p>
<p><a href="http://www.justsoftwaresolutions.co.uk/threading/multithreading-in-c++0x-part-8-futures-and-promises.html" rel="nofollow">http://www.justsoftwaresolutions.co.uk/threading/multithreading-in-c++0x-part-8-futures-and-promises.html</a></p>
<p>edit: Zu langsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235332</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 24 Jul 2012 17:38:30 GMT</pubDate></item><item><title><![CDATA[Reply to Asynchrone Funktionsaufrufe on Tue, 24 Jul 2012 17:41:43 GMT]]></title><description><![CDATA[<p>std::async</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235334</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Tue, 24 Jul 2012 17:41:43 GMT</pubDate></item><item><title><![CDATA[Reply to Asynchrone Funktionsaufrufe on Tue, 24 Jul 2012 18:09:22 GMT]]></title><description><![CDATA[<p>cooky: Genau, so was!</p>
<p>Okay, die Futures sind das, was ich will, vielen Dank. <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>
<p>Klappt das mit MSVC2010 bereits (reibungsfrei), wisst ihr das auch noch? Oder ab welcher Version?</p>
<p>Genau machen will ich eine Funktion aufrufen, die ziemlich lange dauert. Der Benutzer soll aber den Vorgang abbrechen können oder währenddessen irgendwas anderes mit meinem tollen Programm machen können. Und da es sich tatsächlich nur um einen einfachen asynchronen Funktionsaufruf handelt und nicht etwa um einen nebenläufigen Thread, der brav alle paar Minuten einen neuen Kaffee kocht oder so, hielt ich Threads für etwas overheaded und darum möglicherweise unnötig fehleranfällig (das ist ja die Standardbegründung dafür, dass es futures und promises überhaupt gibt, schätze ich).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235342</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 24 Jul 2012 18:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to Asynchrone Funktionsaufrufe on Tue, 24 Jul 2012 18:48:50 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>[...] Diese sind mWn einer der wenigen Teile der C++11-Threads, die es so in Boost nicht gibt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Sind die futures und promises in boost anders, als die in C++11?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235357</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 24 Jul 2012 18:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Asynchrone Funktionsaufrufe on Tue, 24 Jul 2012 19:17:52 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>[...] Diese sind mWn einer der wenigen Teile der C++11-Threads, die es so in Boost nicht gibt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Sind die futures und promises in boost anders, als die in C++11?</p>
</blockquote>
<p>Nein, meines Wissens sind die ziemlich gleich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235366</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 24 Jul 2012 19:17:52 GMT</pubDate></item><item><title><![CDATA[Reply to Asynchrone Funktionsaufrufe on Tue, 24 Jul 2012 20:10:13 GMT]]></title><description><![CDATA[<p>Aber irgendwie finde ich zu boost-future keine Doku, nur den Header?</p>
<p>Ich saß gerade zu lange vor der IDE, sagt Mal kurz, ob ich hier logisch richtig liege: Bei QT kann man ja einen asynchronen Funktionsaufruf mit signals/slots kombinieren, sodass ein slot aufgerufen wird, wenn der Funktionsaufruf beendet wurde. Das geht bei boost aber nicht, weil es ja keine Main/Eventloop gibt, sodass die Abfrage, ob Thread fertig ist, ja gar nicht von irgendwem regelmäßig getätigt werden kann, richtig?</p>
<p>Schlimm ist das nicht, muss man halt eine eigene Eventloop basteln oder eben auf Anfrage Thread-Progress-Status abrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235376</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 24 Jul 2012 20:10:13 GMT</pubDate></item><item><title><![CDATA[Reply to Asynchrone Funktionsaufrufe on Tue, 24 Jul 2012 20:25:00 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Aber irgendwie finde ich zu boost-future keine Doku, nur den Header?</p>
</blockquote>
<p>Das gehört zu boost.thread und befindet sich dort bei den Synchronisationsmechanismen. Da sollten sogar einige Beispiele bei sein.<br />
Edit: <a href="http://www.boost.org/doc/libs/1_50_0/doc/html/thread/synchronization.html#thread.synchronization.futures" rel="nofollow">Hier</a> gibts das...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235382</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 24 Jul 2012 20:25:00 GMT</pubDate></item><item><title><![CDATA[Reply to Asynchrone Funktionsaufrufe on Tue, 24 Jul 2012 20:30:13 GMT]]></title><description><![CDATA[<p>Ah, cool, danke <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="🙂"
    /> Hab ich wohl zu sehr auf Google vertraut und daher in thread zu oberflächlich gesucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2235383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2235383</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 24 Jul 2012 20:30:13 GMT</pubDate></item></channel></rss>