Function

dispatch_sync

Submits a block object for execution and returns after that block finishes executing.

Declaration

void dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);

Parameters

queue

The queue on which to submit the block. This parameter cannot be NULL.

block

The block containing the work to perform. This block has no return value and no parameters. This parameter cannot be NULL.

Discussion

Submits a block to the specified dispatch queue for synchronous execution. Unlike dispatch_async, this function does not return until the block has finished. Calling this function and targeting the current queue results in deadlock.

Unlike with dispatch_async, no retain is performed on the target queue. Because calls to this function are synchronous, it "borrows" the reference of the caller. Moreover, no Block_copy is performed on the block.

As a performance optimization, this function executes blocks on the current thread whenever possible, with one obvious exception. Specifically, blocks submitted to the main dispatch queue always run on the main thread.

See Also

Executing Tasks Synchronously

dispatch_sync_f

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