dispatch_once(3)
NAME
dispatch_once -- execute a block only once
SYNOPSIS
#include <dispatch/dispatch.h> void dispatch_once(dispatch_once_t *predicate, void (^block)(void)); void dispatch_once_f(dispatch_once_t *predicate, void *context, void (*function)(void *));
DESCRIPTION
The dispatch_once() function provides a simple and efficient mechanism to
run an initializer exactly once, similar to pthread_once(3). Well
designed code hides the use of lazy initialization. For example:
- FILE *getlogfile(void)
{ - static dispatch_once_t pred;
static FILE *logfile; - dispatch_once(&pred, ^{
logfile = fopen(MY_LOG_FILE, "a");
- });
- return logfile;
- }
FUNDAMENTALS
The dispatch_once() function is a wrapper around dispatch_once_f().