dispatch_once(3) | Library Functions Manual | 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
().
SEE ALSO
May 1, 2009 | Darwin |