Thanks Ion, Does it mean any size_t value stored in shared memory will be updated atomically if I use boost.atomic? What is the difference between Boost.Atomic vs std::atomic? Can std::atomic work with boost::interprocess? When do you foresee boost.interprocess moving to boost.atomic? Thanks
On May 31, 2017, at 8:35 AM, Ion GaztaƱaga via Boost-users
wrote: On 30/05/2017 23:47, dnj0496 via Boost-users wrote: Hi, I am new to boost-interprocess. I am trying to store some of my data structures in shared memory using boost::interprocess. Each of my data structure(s) contain a bunch of counters (basically size_t values) updated atomically. In the traditional world, std::atomic supports atomic update for size_t. However, I came to know that boost::interprocess doesn't support atomic update for uint64. I've looked at pairing my counter with a lock for synchronization purposes. I've implemented it and it seems to work. However, the upgradable_mutex is consuming 144bytes while my counter is 8bytes(size_t) making it cost prohibitive. Alternatively, I could use one lock for all the counters of a class to spread the cost but that'd affect the performance and affect parallelism.
You can try Boost.Atomic. It should work on platforms where you know you have 64 bit atomic instructions. In general Interprocess should migrate to Boost.Atomic, which should be faster.
Ion _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users