dispatch_once - Man Page
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
Referenced By
dispatch(3), dispatch_async(3).
May 1, 2009