-
Simon McVittie authored
The comment implied that even failed initialization would set is_initialized = TRUE, but this wasn't the case - failed initialization would only set initialization_error, and it was necessary to check both. It turns out the documented semantics are nicer than the implemented semantics, since this lets us use atomic operations, which are also memory barriers, to avoid needing separate memory barriers or locks for initialization_error (and other members that are read-only after construction). I expect to need more than one atomically-accessed flag to fix thread safety, so instead of a minimal implementation I've turned is_initialized into a flags word. Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk> Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661689 Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992 Reviewed-by: David Zeuthen <davidz@redhat.com>
245d68be