Обсуждение: Status of 64 bit atomics

Поиск
Список
Период
Сортировка

Status of 64 bit atomics

От
John Gorman
Дата:
Hi All

Someone recently told me that the postgresql atomics library was incomplete
for 64 bit operations such as pg_atomic_fetch_add_u64() and should not be used.

Can someone definitively confirm whether it is okay to rely on the 64 bit atomics
or whether it is better to protect 64 bit operations with a spinlock?

Thanks!
John

Re: Status of 64 bit atomics

От
Arthur Silva
Дата:
<div dir="ltr"><p dir="ltr"><br /> On May 27, 2016 5:01 PM, "John Gorman" <<a href="mailto:johngorman2@gmail.com"
target="_blank">johngorman2@gmail.com</a>>wrote:<br /> ><br /> > Hi All<br /> ><br /> > Someone recently
toldme that the postgresql atomics library was incomplete<br /> > for 64 bit operations such
as pg_atomic_fetch_add_u64()and should not be used.<br /> ><br /> > Can someone definitively confirm whether it
isokay to rely on the 64 bit atomics<br /> > or whether it is better to protect 64 bit operations with a
spinlock?<br/> ><br /> > Thanks!<br /> > John<p dir="ltr">Golang has asm implementations for these even on
32bitplatforms (see <a
href="https://github.com/golang/go/tree/master/src/sync/atomic">https://github.com/golang/go/tree/master/src/sync/atomic</a>).<p
dir="ltr">Couldn'twe borrow them? Or even better, fall back to spin lock on these, but transparently. </div> 

Re: Status of 64 bit atomics

От
Andres Freund
Дата:
Hi,

On 2016-05-27 11:00:42 -0400, John Gorman wrote:
> Someone recently told me that the postgresql atomics library was incomplete
> for 64 bit operations such as pg_atomic_fetch_add_u64() and should not be
> used.

There's currently no fallback for 32bit platforms without 64bit atomics
support.  I posted a patch adding that fallback, which I plan to commit
soon after the start of the 9.7 development window opens.


> Can someone definitively confirm whether it is okay to rely on the 64
> bit atomics or whether it is better to protect 64 bit operations with
> a spinlock?

For current versions 64bit atomics are working, but you'll get
compilation errors if the platform doesn't have 64bit atomics
support. That's not actually many CPUs these days; most prominent are
probably older arm CPUs.

Andres