Differences

This shows you the differences between two versions of the page.

Link to this comparison view

neurali:shared_memory [2015/08/10 11:33]
profpro
neurali:shared_memory [2018/04/25 07:55]
Line 1: Line 1:
-====== Shared memory ====== 
  
-http://​www.boost.org/​doc/​libs/​1_38_0/​doc/​html/​interprocess/​sharedmemorybetweenprocesses.html 
- 
-===== Boost.Interprocess ===== 
- 
- 
-La memoria condivisa permette la comunicazione tra processi senza intervento del sistema operativo, come accadebbre se si usasse una file mappato in memoria. 
-Questo sistema di comunicazione è quindi più veloce, ma richiede la sincronizzazione tra i processi che utilizzano la memoria condivisa. 
- 
-Operazioni: 
- 
-  - creare un oggetto shared memory, grazie al sistema operativo 
-  - impostare la sua dimensione 
-  - associare la shared memory allo spazio degli indirizzi del processo che ne ha fatto richiesta, e anche ad altri processi che ne faranno richiesta. 
-  - inizializzazione della memoria a zero 
-  - liberare la memoria 
- 
-<code cpp> 
-#include <​boost/​interprocess/​shared_memory_object.hpp>​ 
-using boost::​interprocess;​ 
- // la creazione potrebbe lanciare eccezione se già esiste 
-shared_memory_object shm_obj(create_only,"​shared_memory",​read_write);​ 
-shm_obj.truncate(1000);​ // dimensione della memoria condivisa 
- 
-</​code>​ 
- 
- 
-<code cpp> 
-#include <​boost/​interprocess/​mapped_region.hpp>​ 
-#include <​iostream>​ 
-#include <​cstring>​ 
- 
-std::size_t ShmSize = 1000; 
- 
-mapped_region region 
-   ( shm_obj ​                 //​Memory-mappable object 
-   , read_write ​              //​Access mode 
-   , 0                //Offset from the beginning of shm 
-   , ShmSize ​       //Length of the region 
-   ); 
-    
-std::​memset(region.get_address(),​ 0, region.get_size());​ 
- 
- 
-</​code>​ 
- 
- 
-<code cpp> 
-// la rimozione potrebbe lanciare eccezione se memoria in uso da altri 
- 
-shared_memory_object::​remove("​shared_memory"​);​ 
-</​code>​ 
- 
-<code cpp> 
- 
-shared_memory_object shm_obj(open_only,"​shared_memory",​read_only);​ 
-const char *p = static_cast<​char*>​(region.get_address());​ 
-</​code>​ 
  • neurali/shared_memory.txt
  • Last modified: 2018/04/25 07:55
  • (external edit)