This manual page is for Mac OS X version 10.6

If you are running a different version of Mac OS X, view the documentation locally:

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • For more information about the manual page format, see the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Reference Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.



dispatch_api(3)                         BSD Library Functions Manual                         dispatch_api(3)

NAME
     dispatch_api -- Designing API using dispatch

DESCRIPTION
     The following is a brief summary of some of the common design patterns to consider when designing and
     implementing API in terms of dispatch queues and blocks.

     A general recommendation is to allow both a callback block and target dispatch queue to be specified.
     This gives the application the greatest flexibility in handling asynchronous events.

     It's also recommended that interfaces take only a single block as the last parameter. This is both for
     consistency across projects, as well as the visual aesthetics of multiline blocks that are declared
     inline. The dispatch queue to which the block will be submitted should immediately precede the block
     argument (second-to-last argument). For example:

           read_async(file, callback_queue, ^{
                   printf("received callback.0);
           });

     When function pointer alternatives to interfaces that take blocks are provided, the argument order of
     the function signature should be identical to the block variant; with the exception that the block
     argument is replaced with a context pointer, and a new last parameter is added, which is the function
     to call.

     The function based callback should pass the context pointer as the first argument, and the subsequent
     arguments should be identical to the block based variant (albeit offset by one in order).

     It is also important to use consistent naming. The dispatch API, for example, uses the suffix "_f" for
     function based variants.

SEE ALSO
     dispatch(3), dispatch_async(3), dispatch_queue_create(3)

Darwin                                           May 1, 2009                                          Darwin

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.