Boost logo

Boost Users :

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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net