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
().
SEE ALSO¶
dispatch(3)