Function

dispatch_once

Executes a block object once and only once for the lifetime of an application.

Declaration

void dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);

Parameters

predicate

A pointer to a dispatch_once_t structure that is used to test whether the block has completed or not.

block

The block object to execute once.

Discussion

This function is useful for initialization of global data (singletons) in an application. Always call this function before using or testing any variables that are initialized by the block.

If called simultaneously from multiple threads, this function waits synchronously until the block has completed.

The predicate must point to a variable stored in global or static scope. The result of using a predicate with automatic or dynamic storage (including Objective-C instance variables) is undefined.

See Also

Managing Dispatch Queues

Dispatch Queue Types

Attributes to use when creating new dispatch queues.

dispatch_queue_t

A dispatch queue is a lightweight object to which your application submits blocks for subsequent execution.

dispatch_get_main_queue

Returns the serial dispatch queue associated with the application’s main thread.

dispatch_get_global_queue

Returns a system-defined global concurrent queue with the specified quality of service class.

dispatch_get_current_queue

Returns the queue on which the currently executing block is running.

Deprecated
dispatch_set_target_queue

Sets the target queue for the given object.

dispatch_async

Submits a block for asynchronous execution on a dispatch queue and returns immediately.

dispatch_async_f

Submits an application-defined function for asynchronous execution on a dispatch queue and returns immediately.

dispatch_sync_f

Submits an application-defined function for synchronous execution on a dispatch queue.

dispatch_after

Enqueue a block for execution at the specified time.

dispatch_after_f

Enqueues an application-defined function for execution at a specified time.

dispatch_apply_f

Submits an application-defined function to a dispatch queue for multiple invocations.

dispatch_queue_get_label

Returns the label specified for the queue when the queue was created.

dispatch_get_specific

Returns the value for the key associated with the current dispatch queue.

dispatch_queue_set_specific

Sets the key/value data for the specified dispatch queue.

dispatch_queue_get_specific

Gets the value for the key associated with the specified dispatch queue.

dispatch_once_t

A predicate for use with the dispatch_once function.

dispatch_once_f

Executes an application-defined function once and only once for the lifetime of an application.

dispatch_main

Executes blocks submitted to the main queue.