The Apache GCD MPM allows the Apache web server to use Grand Central Dispatch (GCD), rather than threads or processes, as a source of concurrency on Mac OS X and FreeBSD. It is intended to illustrate both GCD’s programming model and programmability benefits, as well as how GCD can be integrated into a existing large-scale and thread-aware application.
The libdispatch library is available in the FreeBSD ports collection for experimental use on FreeBSD 9.x. Several kqueue kernel enhancements are planned for FreeBSD 8.1 in order to allow the libdispatch port to be used on FreeBSD 8.x as well.
Information is available on the FreeBSD wiki about installing the libdispatch, llvm-devel, and compiler-rt ports allowing full use of the blocks extension to C with libdispatch.
The libdispatch project consists of the user space implementation of the Grand Central Dispatch API as seen in Mac OS X version 10.6 Snow Leopard. The Mac OS X kernel support for GCD may be found in the xnu project. While kernel support provides many performance optimizations on Mac OS X, it is not strictly required for portability to other platforms. However, in order to implement the full API for Grand Central Dispatch, C compiler support for blocks is required. The blocks runtime is available as part of the LLVM project.
This project is intended to be a resource for developers interested in learning more about libdispatch on Mac OS X. Contributions to this project will be continually evaluated for possible inclusion in future releases of Mac OS X. The sources are available under the terms of the Apache License, Version 2.0 in the hope that they might serve as a launching point for porting GCD to other platforms.