Boost logo

Boost Users :

Subject: Re: [Boost-users] [Interprocess] uint64 atomic
From: Dk Jack (dnj0496_at_[hidden])
Date: 2017-05-31 18:33:24

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 <boost-users_at_[hidden]> 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_at_[hidden]

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at