In order to guarantee single access to a function, the GNU C Library implements a call once function to ensure a function is only called once in the presence of multiple, potentially calling threads.
A complete object type capable of holding a flag used by call_once
.
This value is used to initialize an object of type once_flag
.
void
call_once (once_flag *flag, void (*func) (void))
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
call_once
calls function func exactly once, even if
invoked from several threads. The completion of the function
func synchronizes-with all previous or subsequent calls to
call_once
with the same flag
variable.