Add reference counting types
commit9e5a53d576765819d1c7c233515b9f6e5d77eb61
authorEmmanuele Bassi <ebassi@gnome.org>
Wed, 17 Jan 2018 16:38:45 +0000 (17 16:38 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Mon, 11 Jun 2018 13:59:39 +0000 (11 14:59 +0100)
treedbfb75200eee90a4227d1a93f41ec67f0ff276b1
parent8bbc38b497ee06d90248aa7b89ea16848ea811cb
Add reference counting types

We have a common pattern for reference counting in GLib, but we always
implement it with ad hoc code. This is a good chance at trying to
standardise the implementation and make it public, so that other code
using GLib can take advantage of shared behaviour and semantics.

Instead of simply taking an integer variable, we should create type
aliases, to immediately distinguish the reference counting semantics of
the code; we can handle mixing atomic reference counting with a
non-atomic type (and vice versa) by using differently signed values for
the atomic and non-atomic cases.

The gatomicrefcount type is modelled on the Linux kernel refcount_t
type; the grefcount type is added to let single-threaded code bases to
avoid paying the price of atomic memory barriers on reference counting
operations.
docs/reference/glib/glib-docs.xml
docs/reference/glib/glib-sections.txt
glib/Makefile.am
glib/glib.h
glib/grefcount.c [new file with mode: 0644]
glib/grefcount.h [new file with mode: 0644]
glib/gtypes.h
glib/meson.build