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
|
Список | 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 по дате отправления: