<?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[gibts unter c++ sowas wie goroutines?]]></title><description><![CDATA[<p>hallo <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>ich setze mich gerade mit multicore programmierung auseinander und fand da ein paar nette ansätze (active object etc.)</p>
<p>was mir besonders ins auge gestochen ist waren goroutines von google's go.</p>
<p>kurze erklärung:</p>
<p>goroutines sind user-threads die über spezielle variablen, so genannte channels mit einander kommunizieren können.</p>
<p>diese user-threads werden sprachintern über &quot;echte&quot; threads verteilt.</p>
<p>so bekommt man auf der einen seite den vorteil, dass das OS die threads auf die verschiedenen cores verteilen kann und der kram so zu sagen parallel laufen kann.</p>
<p>und man hat den vorteil von user-threads, die vom OS keinen context-switch verlangen, weil sie von der software selbst verwaltet werden. so sind wesentlich mehr goroutines möglich als threads sinnvoll wären.</p>
<p>erlang hat scheinbar ein ähnliches modell...</p>
<p>wollt nur wissen, ob es ähnliche möglichkeiten auch für C++ gibt. also irgend eine lib oder sowas <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/topic/264280/gibts-unter-c-sowas-wie-goroutines</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 03:01:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264280.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 Apr 2010 17:35:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to gibts unter c++ sowas wie goroutines? on Mon, 05 Apr 2010 17:35:48 GMT]]></title><description><![CDATA[<p>hallo <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>ich setze mich gerade mit multicore programmierung auseinander und fand da ein paar nette ansätze (active object etc.)</p>
<p>was mir besonders ins auge gestochen ist waren goroutines von google's go.</p>
<p>kurze erklärung:</p>
<p>goroutines sind user-threads die über spezielle variablen, so genannte channels mit einander kommunizieren können.</p>
<p>diese user-threads werden sprachintern über &quot;echte&quot; threads verteilt.</p>
<p>so bekommt man auf der einen seite den vorteil, dass das OS die threads auf die verschiedenen cores verteilen kann und der kram so zu sagen parallel laufen kann.</p>
<p>und man hat den vorteil von user-threads, die vom OS keinen context-switch verlangen, weil sie von der software selbst verwaltet werden. so sind wesentlich mehr goroutines möglich als threads sinnvoll wären.</p>
<p>erlang hat scheinbar ein ähnliches modell...</p>
<p>wollt nur wissen, ob es ähnliche möglichkeiten auch für C++ gibt. also irgend eine lib oder sowas <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/1877936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877936</guid><dc:creator><![CDATA[akay]]></dc:creator><pubDate>Mon, 05 Apr 2010 17:35:48 GMT</pubDate></item><item><title><![CDATA[Reply to gibts unter c++ sowas wie goroutines? on Mon, 05 Apr 2010 19:24:34 GMT]]></title><description><![CDATA[<p>Unter Windows hat man zB diese Dreieinigkeit: <a href="http://msdn.microsoft.com/en-us/library/dd492418(VS.100).aspx" rel="nofollow">Parallel Patterns Library</a>, <a href="http://msdn.microsoft.com/en-us/library/dd492627(VS.100).aspx" rel="nofollow">Asynchronous Agents Library</a> und <a href="http://msdn.microsoft.com/en-us/library/dd504870(VS.100).aspx" rel="nofollow">Concurrent Runtime</a>.</p>
<p>Wobei die Kommunikation ueber Channels bei Erlang und Go komfortabler ist als es in C++ moeglich ist. Aber funktionieren tut es auch in C++ ganz ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877974</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 05 Apr 2010 19:24:34 GMT</pubDate></item><item><title><![CDATA[Reply to gibts unter c++ sowas wie goroutines? on Tue, 06 Apr 2010 13:23:52 GMT]]></title><description><![CDATA[<p>vielen dank, ich schaus mir mal an <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/1878317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878317</guid><dc:creator><![CDATA[akay]]></dc:creator><pubDate>Tue, 06 Apr 2010 13:23:52 GMT</pubDate></item><item><title><![CDATA[Reply to gibts unter c++ sowas wie goroutines? on Tue, 06 Apr 2010 13:59:43 GMT]]></title><description><![CDATA[<p>Ja, gibt es. Channels sind wahrscheinlich einfach komfortablere Pipes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1878341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878341</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 06 Apr 2010 13:59:43 GMT</pubDate></item><item><title><![CDATA[Reply to gibts unter c++ sowas wie goroutines? on Tue, 06 Apr 2010 14:56:33 GMT]]></title><description><![CDATA[<p>akay schrieb:</p>
<blockquote>
<p>ich setze mich gerade mit multicore programmierung auseinander [...] goroutines [...] wollt nur wissen, ob es ähnliche möglichkeiten auch für C++ gibt. also irgend eine lib oder sowas</p>
</blockquote>
<p>In der nächsten C++ Version sollte sich das alles mehr oder weniger elegant emulieren lassen, denke ich. Aber Go hat, was das angeht, sicherlich den süßeren Syntaxzucker.</p>
<pre><code>func DoSomething(done chan &lt;- int) {
  // do some processing...
  done &lt;- 1;
}

func main() {
  done := make(chan int, 1);
  go DoSomething(done);
  // do something else
  &lt;-done;  // wait
  // do more things
}
</code></pre>
<p><em>könnte</em> man <em>vielleicht</em> auch so in C++0x machen:</p>
<pre><code>void DoSomething(chan&lt;int&gt; done) {
  // do some processing...
  done &lt;&lt; 1;
}

int main() {
  auto done = make_chan&lt;int&gt;(1);
  auto futu = async(DoSomething,done);
  done.read(); // wait
  futu.get(); // retrieve the function's result from the future
}
</code></pre>
<p>wobei ich das Klassentemplate chan&lt;&gt; und das Funktionstemplate make_chan&lt;&gt; frei erfunden habe. Es müsste aber möglich sein, sie so zu definieren, dass hier genau das passiert, was man erwarten würde. Natürlich ist hier der &quot;done-Channel&quot; wegen dem future-Objekt überflüssig. Was allerdings passiert, wenn das future-Objekt zerstört wird, bevor die Ausführung von DoSomething fertig ist, weiß ich nicht. Müsste man mal nachgucken. Eventuell ist das nicht erlaubt. Man kann aber auch relativ einfach einen Ersatz für std::async schreiben, der das verkraften würde.</p>
<p>... nur mal so um auf den Geschmack von C++0x zu kommen ... <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/1878374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1878374</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 06 Apr 2010 14:56:33 GMT</pubDate></item></channel></rss>