lib d'allocateurs en shared memory

lib d'allocateurs en shared memory - C - Programmation

Marsh Posté le 17-04-2004 à 17:10:15    

Bonjour,
 
je recherche une lib C rapide et efficiente, utilisable directement et facilement, pour faire des allocations en shared memory.
 
Idéalement, elle gère elle-même les locks et je voudrais pouvoir l'utiliser ainsi (grosso-merdo) :
 

Code :
  1. struct t_mem_alloc * pFixedAlloc;
  2.   struct t_mem_alloc * pVariableAlloc;
  3.   void * heap;
  4.   int mem_offset;
  5.   /* initialisation de heap dans la shared avec 2Mo */
  6.   /* la même zone est utilisée par différents programmes */
  7.   lib_init_heap_zone(&heap, 2*1024*1024, "/tmp/prout_prout_seg.shm" );
  8.   lib_create_allocator_fixed(
  9.     &pFixedAlloc,
  10.     heap, // les allocations seront faites dans la région pointée par heap
  11.     12, // pFixedAlloc n'allouera que des blocks de 12 octets
  12.     1024*1024); // sur une région de 1Mo
  13.   mem_offset=lib_malloc_fixed(pFixedAlloc); // on alloue 12 octets
  14.   memcpy(lib_get_addr_fixed(pFixedAlloc, mem_offset), "blablablabla", 12);
  15.   lib_free_fixed(pFixedAlloc, mem_offset); // on libère 12 octets
  16.  
  17.   lib_create_allocator_variable(
  18.     &pVariableAlloc,
  19.     (char*)heap+(1024*1024), // les allocations seront faites dans la région pointée par heap + 1Mo
  20.     1024*1024); // sur une région de 1Mo
  21.   mem_offset=lib_malloc_variable(pVariableAlloc, 128); // on alloue 128 octets
  22.   mem_offset=lib_realloc_variable(pVariableAlloc, mem_offset, 256);
  23.   lib_free_variable(pVariableAlloc, mem_offset);
  24.   lib_destroy_allocator_fixed(pFixedAlloc);
  25.   lib_destroy_allocator_variable(pVariableAlloc);


 
Dans ce que j'ai trouvé avec google, il n'y a que heap layers qui permettrait de construire une telle lib ce qui n'est pas tout à fait ce que je recherche. Quelqu'un connaîtrait-il une petite merveille correspondant à ce que je recherche?


Message édité par docmaboul le 17-04-2004 à 17:15:23
Reply

Marsh Posté le 17-04-2004 à 17:10:15   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed