Re: better atomics - v0.6

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: better atomics - v0.6
Дата
Msg-id 20140924160047.GR2521@awork2.anarazel.de
обсуждение исходный текст
Ответ на Re: better atomics - v0.6  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Ответы Re: better atomics - v0.6  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On 2014-09-24 18:55:51 +0300, Heikki Linnakangas wrote:
> On 09/24/2014 03:37 PM, Andres Freund wrote:
> >>>> >+/*
> >>>> >+ * pg_fetch_add_until_u32 - saturated addition to variable
> >>>> >+ *
> >>>> >+ * Returns the the value of ptr after the arithmetic operation.
> >>>> >+ *
> >>>> >+ * Full barrier semantics.
> >>>> >+ */
> >>>> >+STATIC_IF_INLINE uint32
> >>>> >+pg_atomic_fetch_add_until_u32(volatile pg_atomic_uint32 *ptr, int32 add_,
> >>>> >+                              uint32 until)
> >>>> >+{
> >>>> >+    CHECK_POINTER_ALIGNMENT(ptr, 4);
> >>>> >+    return pg_atomic_fetch_add_until_u32_impl(ptr, add_, until);
> >>>> >+}
> >>>> >+
> >>>
> >>>This was a surprise to me, I don't recall discussion of an "fetch-add-until"
> >>>operation, and hadn't actually ever heard of it before.
> >It was included from the first version on, and I'd mentioned it a couple
> >times.
> 
> There doesn't seem to be any hardware implementations of that in the patch.
> Is there any architecture that has an instruction or compiler intrinsic for
> that?

You can implement it rather efficiently on ll/sc architectures. But I
don't really think it matters. I prefer add_until (I've seen it named
saturated add before as well) to live in the atomics code, rather than
reimplement it in atomics employing code. I guess you see that
differently?

Greetings,

Andres Freund

-- Andres Freund                       http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: better atomics - v0.6
Следующее
От: Tom Lane
Дата:
Сообщение: Re: identify_locking_dependencies is broken for schema-only dumps