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

dispatch(3)

Referenced By

dispatch(3), dispatch_async(3).

May 1, 2009