Subject: Re: [Boost-users] [Interprocess] uint64 atomic
From: Ion Gaztañaga (igaztanaga_at_[hidden])
Date: 2017-05-31 15:35:17


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