“It's not an easy task. You should catch the exception and then notify all connected processes that should disconnected from the segment (as only offline growing is supported). After that a process can call "grow"

to try extend the segment. Then, all processes can attach to the newly grown segment.

Think of that as a complex binary file that must be extended and internal structures changed. All users should close the file, the file should be changed by a process and then all users can start using the file again.”

 

 

OK Ion, thank you for that, I see……..

 

 

1.       Can I ask what mechanism you would suggest for notifying the other processes to disconnect before the grow() operation?

 

2.       Considering how to deal with the issue of dynamically growing a shared memory vector where there is one producer process and several consumers; I hit upon the notion of having the producer process use a std::vector to conventionally store data and then using a boost shared memory segment to store a pointer to the std::vector.  Consumer processes would access the boost shared memory to retrieve the pointer value thus enabling access to the std::vector data store in the producer process.  This, I hoped, might remove the complexities associated with dynamically growing a shared memory segment? The big question is: would it work?  Would this be a valid means of interprocess communication?  Or fraught with complexities?

 

Thanks,

 

Riskybiz.