dispatch_once — execute a block only once
Contents
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().
Name
dispatch_once — execute a block only once
See Also
dispatch(3) Darwin May 1, 2009 dispatch_once(3)
Synopsis
#include<dispatch/dispatch.h>voiddispatch_once(dispatch_once_t*predicate, void(^block)(void));
voiddispatch_once_f(dispatch_once_t*predicate, void*context, void(*function)(void*));
