<?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[&amp;quot;Global bekannte Variablen&amp;quot;?]]></title><description><![CDATA[<p>Hallo,<br />
ich habe mich heute mal etwas mit der Google v8 JavaScript Engine beschäftigt. Dabei habe ich in der Dokumentation gesehen, dass das ganze ja durchaus gut durchdacht ist.</p>
<p>Aber eins macht mich stutzig: Wie man hier - <a href="http://code.google.com/intl/de/apis/v8/get_started.html#hello" rel="nofollow">http://code.google.com/intl/de/apis/v8/get_started.html#hello</a> - sieht, wird eine Instanz der Klasse <code>HandleScope</code> erstellt. Sinn ist, dass alle Objekte aus dem aktuellen Scope in die &quot;Stack-Liste&quot; des erstellten <code>HandleScope</code> s gesteckt werden.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">Handle&lt;String&gt; source = String::New(&quot;'Hello' + ', World!'&quot;);
</code></pre>
<p>Der String wird automatisch in den Stack vom erstellten <code>HandleScope</code> gepackt.</p>
<p>Zwei Fragen:</p>
<ol>
<li>Woher weiß der String, dass er in genau diesen Stack muss? Er kennt die Instanz von HandleScope doch gar nicht. Ich würde das ganze nur kapieren, wenn es so aussähe:</li>
</ol>
<pre><code class="language-cpp">Handle&lt;String&gt; source = String::New(handle_scope /*pass as reference*/, &quot;'Hello' + ', World!'&quot;);
</code></pre>
<ol start="2">
<li>Bin ich recht in der Annahme, dass Handle&lt;T&gt; den operator= so (oder ähnlich) deklariert?</li>
</ol>
<pre><code class="language-cpp">template&lt;typename T&gt; void Handle::operator=(T &amp;other)
</code></pre>
<p>Gruß und Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/281979/quot-global-bekannte-variablen-quot</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 09:42:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281979.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Feb 2011 13:22:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &amp;quot;Global bekannte Variablen&amp;quot;? on Fri, 11 Feb 2011 13:22:27 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe mich heute mal etwas mit der Google v8 JavaScript Engine beschäftigt. Dabei habe ich in der Dokumentation gesehen, dass das ganze ja durchaus gut durchdacht ist.</p>
<p>Aber eins macht mich stutzig: Wie man hier - <a href="http://code.google.com/intl/de/apis/v8/get_started.html#hello" rel="nofollow">http://code.google.com/intl/de/apis/v8/get_started.html#hello</a> - sieht, wird eine Instanz der Klasse <code>HandleScope</code> erstellt. Sinn ist, dass alle Objekte aus dem aktuellen Scope in die &quot;Stack-Liste&quot; des erstellten <code>HandleScope</code> s gesteckt werden.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">Handle&lt;String&gt; source = String::New(&quot;'Hello' + ', World!'&quot;);
</code></pre>
<p>Der String wird automatisch in den Stack vom erstellten <code>HandleScope</code> gepackt.</p>
<p>Zwei Fragen:</p>
<ol>
<li>Woher weiß der String, dass er in genau diesen Stack muss? Er kennt die Instanz von HandleScope doch gar nicht. Ich würde das ganze nur kapieren, wenn es so aussähe:</li>
</ol>
<pre><code class="language-cpp">Handle&lt;String&gt; source = String::New(handle_scope /*pass as reference*/, &quot;'Hello' + ', World!'&quot;);
</code></pre>
<ol start="2">
<li>Bin ich recht in der Annahme, dass Handle&lt;T&gt; den operator= so (oder ähnlich) deklariert?</li>
</ol>
<pre><code class="language-cpp">template&lt;typename T&gt; void Handle::operator=(T &amp;other)
</code></pre>
<p>Gruß und Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019645</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Fri, 11 Feb 2011 13:22:27 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Global bekannte Variablen&amp;quot;? on Sat, 12 Feb 2011 00:21:41 GMT]]></title><description><![CDATA[<p>Ich vermute dass da globale, thread-lokale Variablen verwendet werden.</p>
<p>D.h. der Konstruktor von &quot;HandleScope&quot; trägt die Adresse &quot;seines&quot; Objekts in einer globalen Variable ein, und merkt sich das was vorher dringestanden hat. Der Destruktor schreibt dann wieder den Wert rein der vorher dringestanden hat.</p>
<p>Und die &quot;Handles&quot; lesen diese globale Variable aus, um den &quot;aktuellen HandleScope&quot; zu finden, damit sie sich dort registrieren können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019927</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 12 Feb 2011 00:21:41 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Global bekannte Variablen&amp;quot;? on Sat, 12 Feb 2011 10:03:27 GMT]]></title><description><![CDATA[<p>Mhh, doch so simpel?<br />
Aber ich kann mir nicht so recht vorstellen, dass so etwas primitives genutzt wird. Ich kann nicht glauben, dass Google v8 nicht Threadsafe entwickelt hat. So wie ich das nämlich verstanden habe, wäre die Idee von dir nicht Threadsafe, oder?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019983</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sat, 12 Feb 2011 10:03:27 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Global bekannte Variablen&amp;quot;? on Sat, 12 Feb 2011 10:49:39 GMT]]></title><description><![CDATA[<p>Sofern die entsprechenden Mechanismen implementiert sind, sollte man auch das Threadsafe realisieren können. Aber wer weiß...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019997</guid><dc:creator><![CDATA[ghjghjgh]]></dc:creator><pubDate>Sat, 12 Feb 2011 10:49:39 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Global bekannte Variablen&amp;quot;? on Sat, 12 Feb 2011 23:07:21 GMT]]></title><description><![CDATA[<p>Klar ist das thread-safe, ich hab ja geschrieben <em>globale, <strong>thread-lokale</strong> Variablen</em>.<br />
D.h. jeder Thread bekommt seine eigene Kopie von diesen Variablen.</p>
<p>Das ist mit Standard C++ 03 nicht umsetzbar, aber die grösseren Implementierungen bzw. auch Betriebssysteme stellen entsprechende Mechanismen zur Verfügung. Bzw. man kann einfach z.B. Boost.Thread verwenden, wo diese entsprechende Mechanismen intern verwendet werden um eine schönes einheitliches Interface anzubieten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2020336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2020336</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 12 Feb 2011 23:07:21 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Global bekannte Variablen&amp;quot;? on Sun, 13 Feb 2011 12:07:19 GMT]]></title><description><![CDATA[<p>Danke für die Erklärung!</p>
<p>Hat dieser Mechanismus einen bestimmten Namen, den ich gezielt Googlen kann? Ich würde mir so etwas mal gerne anschauen.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2020435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2020435</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sun, 13 Feb 2011 12:07:19 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Global bekannte Variablen&amp;quot;? on Sun, 13 Feb 2011 15:43:28 GMT]]></title><description><![CDATA[<p>Die Scope-Geschichte oder die thread-lokalen Variablen?<br />
Zweiteres nennt man &quot;thread local storage&quot;.<br />
Ersteres... keine Ahnung.<br />
Kenne ich hauptsächlich im Zusammenhang mit Logging-Libs und Error-Handling. Da werden über ähnliche Mechanismen Dinge auf einen thread-lokalen &quot;Stack&quot; gepusht damit man bei Log-Ausgaben oder beim Werfen von Exceptions darauf zugreifen kann. Poor-man's Callstack und so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2020516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2020516</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 13 Feb 2011 15:43:28 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Global bekannte Variablen&amp;quot;? on Sun, 13 Feb 2011 18:18:17 GMT]]></title><description><![CDATA[<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2020586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2020586</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sun, 13 Feb 2011 18:18:17 GMT</pubDate></item></channel></rss>