On 05 Jul 2001 09:07:26 -0400, Bill Stoddard wrote:
> > This implements a hash table using shared memory.
> > Limitations:
> >     * doesn't have a freelist, so deletes aren't reclaimed
> >     * and can't expand it's size (dont know how to implement this with  
> > current shared
> memory system)
> 
> To the best of my knowledge, you cannot expand a shared memory segment (after 
> fork) and
> ensure that all processes use the exact same addresses to access that memory. 
>  If one of
> your processes increases the size of the hash table, you have forever screwed 
> up the hash
> table for all the other processes because you now have addresses in the table 
> that may
> point to completely different storage in all the other processes.
> 

yep... thats true.
what I was planning to do was to have a 'generation' in the header
section (which never changes size), and the non-shared memory section,
and we would increment this when we expanded. the get/set functions
would check the generation flag before anything and would re-open the
shared memory segments NAME+GEN. ...but with the current shared mem
implementation only the parent process can create shared memory, so I
left it as a limitation, as the future SMS might fix this

> Bill


Reply via email to