
James Mansion wrote:
Its a standard. It has the supposed advantage of being a de jure standard - but what does that mean in reality? Portability between a lot of bit players? Real world portability has to mean Windows, MacOS and Linux now, with 'real POSIX' somewhat secondary, which is galling for those of us with sympathy for systems like Solaris with a history of POSIX compliance foremost and frippery second.
I think current approach is portable between Windows, MacOs and Linux. Maybe not as efficient as it should be, but portable anyway. Portable enough to present a shared memory proposal to the standard.
Windows and POSIX are sadly rather different even when the APIs are superficially similar. You can fake one on the other but doing so with the same atomicity is quite hard - even at the level of something as ostensibly simple as pread. There is no substitute for designing for both approaches at once. Still, its done now, unless there is any real stomach to have a second attempt at a shared memory API for Boost.
I think current attempt is positive, taking in care all the difficulties you've just mentioned. If that's not enough, I'm open to suggestions, but I definitely need help, because sadly I can only dedicate a small part of my time to Boost. What would like to see in the library, additional classes for Windows IPC, and System V IPC? Since implementing all those is a heavy task, do you have some preferences on what should we implement first? Best, Ion