<?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[Weak(_ptr) Cache]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe vor kurzem in einem Talk von Herb Sutter in einem Beispiel eine kleine Cache-Klasse gesehen, welche die Daten inter als weak_ptr speichert und ggf. läd, falls nicht gecached und als shared_ptr zurückgibt. Ich würde sowas gerne nutzen und Frage mich nun (da ich den Talk und auch die Stelle nichtmehr genau weiß), auf was ich da genau achten muss. Klar ist, dass das Object zerstört wird, sobald alle shared_ptr zerstört sind. Der weak_ptr liegt aber immernoch im Cache. Wie gehe ich da am besten vor, sodass ein weak_ptr der auf nichts mehr zeigt erkannt und zerstört wird, ohne dass dieser vorher unheil anrichtet?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331489/weak-_ptr-cache</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 15:47:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331489.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Mar 2015 17:03:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Weak(_ptr) Cache on Tue, 03 Mar 2015 17:04:04 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe vor kurzem in einem Talk von Herb Sutter in einem Beispiel eine kleine Cache-Klasse gesehen, welche die Daten inter als weak_ptr speichert und ggf. läd, falls nicht gecached und als shared_ptr zurückgibt. Ich würde sowas gerne nutzen und Frage mich nun (da ich den Talk und auch die Stelle nichtmehr genau weiß), auf was ich da genau achten muss. Klar ist, dass das Object zerstört wird, sobald alle shared_ptr zerstört sind. Der weak_ptr liegt aber immernoch im Cache. Wie gehe ich da am besten vor, sodass ein weak_ptr der auf nichts mehr zeigt erkannt und zerstört wird, ohne dass dieser vorher unheil anrichtet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445068</guid><dc:creator><![CDATA[tkausl]]></dc:creator><pubDate>Tue, 03 Mar 2015 17:04:04 GMT</pubDate></item><item><title><![CDATA[Reply to Weak(_ptr) Cache on Tue, 03 Mar 2015 17:13:00 GMT]]></title><description><![CDATA[<p><a href="https://isocpp.org/wiki/faq/wg21#herb-sutter:" rel="nofollow">https://isocpp.org/wiki/faq/wg21#herb-sutter:</a></p>
<pre><code class="language-cpp">shared_ptr&lt;widget&gt; get_widget( int id ) {
    static map&lt;int, weak_ptr&lt;widget&gt;&gt; cache;
    static mutex mut_cache;
    lock_guard&lt;mutex&gt; hold( mut_cache );
    auto sp = cache[id].lock();
    if( !sp ) cache[id] = sp = load_widget( id );
    return sp;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2445071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445071</guid><dc:creator><![CDATA[tenliner]]></dc:creator><pubDate>Tue, 03 Mar 2015 17:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to Weak(_ptr) Cache on Tue, 03 Mar 2015 17:21:58 GMT]]></title><description><![CDATA[<p>Oh verdammt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Hatte nach &quot;Cache&quot; und &quot;weak_ptr&quot; gesucht, hätte vieleicht auch mal &quot;Herb Sutter&quot; mit suchen können, 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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445072</guid><dc:creator><![CDATA[tkausl]]></dc:creator><pubDate>Tue, 03 Mar 2015 17:21:58 GMT</pubDate></item><item><title><![CDATA[Reply to Weak(_ptr) Cache on Tue, 03 Mar 2015 17:25:45 GMT]]></title><description><![CDATA[<p>Meine Suchbegriffe waren &quot;sutter ten liner&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445073</guid><dc:creator><![CDATA[tenliner]]></dc:creator><pubDate>Tue, 03 Mar 2015 17:25:45 GMT</pubDate></item></channel></rss>