<?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 Shared Memory]]></title><description><![CDATA[<p>Hi,</p>
<p>bei mir ist ein Problem mit dem Shared memory bei boost aufgetreten.<br />
Leider kann ich den code hier nicht so ganz posten...</p>
<p>Aber hintergrund ist Folgender:<br />
1.) In einer DLL gibt es den SharedMemoryAdmin.<br />
Der C-Tor öffnet oder Erzeugt shared memory.<br />
Der Destruktor zerstört ihn wieder.<br />
Der SharedMemoryAdmin ist eine globale Variable Also die instanz).<br />
Das shared_memory_object erzeuge ich mit new, und halte den Pointer als Membervariable im SharedMemoryAdmin</p>
<pre><code>shared_memory_object shm_obj
   (open_or_create               //open or create
   ,&quot;shared_memory&quot;              //name
   ,read_write                    
   );
</code></pre>
<p>Mit der</p>
<pre><code>mapped_region region
   ( shm                      //Memory-mappable object
   , read_write               //Access mode
   , ShmSize/2                //Offset from the beginning of shm
   , ShmSize-ShmSize/2        //Length of the region
   );
</code></pre>
<p>mache ich das gleich.<br />
Den Pointer zum shared memory halte ich dann auch als Membervariable.</p>
<p>Das Gegenstück des shared memory wird dann in einer exe datei erzeugt.<br />
Um genau zu sein im SetUp von CPPTest (Unittest Framework). Zerstört wird es im TearDown. (Beide funktionen werden aufgerufen, und dazwischen der Testfall).<br />
Leider funktioniert das nicht.<br />
Wenn ich genau den selben code zum erzeugen des shared memory im testcase einbaue, dann funktionierts.... aber nicht im SetUp und TearDown....<br />
Ich habe schon an eine Race condition gedacht, aber eigentlich ist es egal wer<br />
zuerst das shared memory öffnet denke ich...</p>
<p>Lange Rede kurzer Sinn <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>1.) Darf ich in boost die beiden Objekte &quot;shared_memory_object und mapped_region&quot;<br />
mit new erzeugen ??<br />
2.) Darf ich das im Construktor einer globalen Variable in einer DLL machen ??<br />
3.) Wenn die Daten nicht übertragen werden, gibt es irgendwo eine fehlerablage wo ich nachschauen kann zum Beispiel &quot;GetLastError&quot; oder so ???</p>
<p>Würd mich über Tipps freuen.<br />
Sorry für die schlechte beschreibung.<br />
Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323689/boost-shared-memory</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 20:04:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323689.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Feb 2014 20:42:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost Shared Memory on Mon, 10 Feb 2014 20:48:33 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>bei mir ist ein Problem mit dem Shared memory bei boost aufgetreten.<br />
Leider kann ich den code hier nicht so ganz posten...</p>
<p>Aber hintergrund ist Folgender:<br />
1.) In einer DLL gibt es den SharedMemoryAdmin.<br />
Der C-Tor öffnet oder Erzeugt shared memory.<br />
Der Destruktor zerstört ihn wieder.<br />
Der SharedMemoryAdmin ist eine globale Variable Also die instanz).<br />
Das shared_memory_object erzeuge ich mit new, und halte den Pointer als Membervariable im SharedMemoryAdmin</p>
<pre><code>shared_memory_object shm_obj
   (open_or_create               //open or create
   ,&quot;shared_memory&quot;              //name
   ,read_write                    
   );
</code></pre>
<p>Mit der</p>
<pre><code>mapped_region region
   ( shm                      //Memory-mappable object
   , read_write               //Access mode
   , ShmSize/2                //Offset from the beginning of shm
   , ShmSize-ShmSize/2        //Length of the region
   );
</code></pre>
<p>mache ich das gleich.<br />
Den Pointer zum shared memory halte ich dann auch als Membervariable.</p>
<p>Das Gegenstück des shared memory wird dann in einer exe datei erzeugt.<br />
Um genau zu sein im SetUp von CPPTest (Unittest Framework). Zerstört wird es im TearDown. (Beide funktionen werden aufgerufen, und dazwischen der Testfall).<br />
Leider funktioniert das nicht.<br />
Wenn ich genau den selben code zum erzeugen des shared memory im testcase einbaue, dann funktionierts.... aber nicht im SetUp und TearDown....<br />
Ich habe schon an eine Race condition gedacht, aber eigentlich ist es egal wer<br />
zuerst das shared memory öffnet denke ich...</p>
<p>Lange Rede kurzer Sinn <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>1.) Darf ich in boost die beiden Objekte &quot;shared_memory_object und mapped_region&quot;<br />
mit new erzeugen ??<br />
2.) Darf ich das im Construktor einer globalen Variable in einer DLL machen ??<br />
3.) Wenn die Daten nicht übertragen werden, gibt es irgendwo eine fehlerablage wo ich nachschauen kann zum Beispiel &quot;GetLastError&quot; oder so ???</p>
<p>Würd mich über Tipps freuen.<br />
Sorry für die schlechte beschreibung.<br />
Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2382606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2382606</guid><dc:creator><![CDATA[NasenBaer_2013]]></dc:creator><pubDate>Mon, 10 Feb 2014 20:48:33 GMT</pubDate></item></channel></rss>