--- /dev/null
+#include <mach/mach.h>
+#include <mach/mach_time.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <pthread.h>
+#include <dispatch.h>
+
+int
+main(void)
+{
+ void (^wb)(dispatch_item_t) = ^(dispatch_item_t di) {
+ printf("%p\t%p\t%s:\t%llu\n", pthread_self(), di, __func__, mach_absolute_time());
+ };
+ void (^cb)(dispatch_item_t) = ^(dispatch_item_t di) {
+ printf("%p\t%p\t%s:\t%llu\n", pthread_self(), di, __func__, mach_absolute_time());
+ };
+ dispatch_queue_t q;
+ dispatch_item_t di_r;
+ size_t i;
+ bool r;
+
+ q = dispatch_queue_new("test", 0, NULL, NULL, NULL);
+ assert(q != NULL);
+
+ for (i = 0; i < 1000; i++) {
+ r = dispatch_call_wait(q, wb, NULL);
+ assert(r);
+ }
+
+ printf("done with dispatch_call_wait()\n");
+
+ r = dispatch_apply_wait(wb, 10, NULL);
+ assert(r);
+
+ r = dispatch_call(q, wb, cb, NULL, &di_r);
+ assert(r);
+ assert(di_r);
+
+ printf("waiting for dispatch_call() callback\n");
+
+ dispatch_main();
+
+ return 0;
+}