conc.c   [plain text]


#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <assert.h>
#include <dispatch.h>
#include <dispatch_private.h>
#include <pthread.h>

int
main(void)
{
	dispatch_block_t wb = ^(dispatch_item_t di) { printf("\t\t%p\tstart\n", pthread_self()); sleep(3); };
	dispatch_block_t cb = ^(dispatch_item_t di) { printf("\t\t%p\tdone\n", pthread_self()); };
	dispatch_queue_t dq;
	bool r;
	int i;

	dq = dispatch_queue_new("conc", DISPATCH_QUEUE_CONCURRENT, NULL, NULL, NULL);
	assert(dq);

	for (i = 0; i < 10; i++) {
		r = dispatch_call(dq, wb, cb, NULL, NULL);
		assert(r);
	}

	dispatch_main();

	return 0;
}