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