libXDispatch provides the power of libdispatch (or Grand Central Dispatch if you like) not only on Mac OS 10.6+ but on Windows and Linux. On each platform libDispatch is built on, the build system (in our case CMake) will automatically search for existing dispatch implementations (possibly integrated deeper than this user space implementation can do). If found, this "native" implementation will automatically be used. If no implementation is available, our own will be used.
Currently a native libdispatch is available on Mac OS X 10.6+ only and therefore will only be used when built on that platform.
Except the source functions, the entire libdispatch interface is available and can be found in the following files (all headers located at include/libdispatch, symbols included in xdispatch binary):
As a first level of abstraction we created a plain C++ interface providing a more OO way of programming. Detailed information can be found at the related page XDispatch.
Additionally an interface wrapping libdispatch as Qt Classes was created. All needed work was done to integrate it with Qt's main event loop. For more information, please see the document on QtDispatch
When Apple introduced Grand Central Dispatch it extended its compilers by a new feature they called "Blocks". Basically this is lambdas (sometimes called closures as well). They allow an easier way to utilize the libdispatch api and are available when using Clang or the gcc 4.2 that's shipped with Apple's current Developer Tools.
On compilers implementing the block syntax, it is fully functional when using this port. However we support way more compilers when using the C++ interface libXDispatch. Please see the documentation found over there for extended details.
Requirements differ depending on your goals. Please see the REQUIREMENTS page for details.
Since version 0.3 libXDispatch is provided as ready-to-use binary package within the downloads section at http://opensource.mlba-team.de/xdispatch/files.
The current xdispatch sources can both be browsed at http://opensource.mlba-team.de/websvn and is accessable using subversion as well. To get your own copy, run:
svn co http://opensource.mlba-team.de/svn/xdispatch/trunk
Please be aware that this is a project still in progress. As such we might introduce interface changes and new functionality until reaching version 1.0 - have a look at the CHANGELOG.dox for details and the current progress. When using this library within a project we recommend to use one of the tagged versions or the stable branch available by using subversion:
svn co http://opensource.mlba-team.de/svn/xdispatch/tags/<version number here> svn co http://opensource.mlba-team.de/svn/xdispatch/branches/stable
Those versions were tested on all supported platforms and should be stable to use.
Please do not forget to take a look at the requirements section and Getting Started. In case you want to report a bug or contribute to this project, please contact us using email via xdispatch (at) mlba-team.de