table of contents
        
      
      
    | 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 |