From 7d83e5c7816b5e343695a75ba58b32dbe1be969a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 1 Oct 2007 20:16:28 +0000 Subject: move all sources down to a seperate src/ tree git-svn-id: file:///home/lennart/svn/public/libsydney/trunk@34 9ba3c220-e4d3-45a2-8aa3-73fcc9aff6ce --- src/test-asyncq.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/test-asyncq.c (limited to 'src/test-asyncq.c') diff --git a/src/test-asyncq.c b/src/test-asyncq.c new file mode 100644 index 0000000..26dbc55 --- /dev/null +++ b/src/test-asyncq.c @@ -0,0 +1,62 @@ +#include + +#include "asyncq.h" +#include "thread.h" +#include "macro.h" + +#define ITERATIONS_MAX 1000 + +static void thread(void *userdata) { + sa_asyncq_t *q = userdata; + int i; + + for (i = 0; i < ITERATIONS_MAX; i++) { + sa_asyncq_item_t *i; + + i = sa_asyncq_get(q); + sa_assert(i); + + sa_asyncq_push(q, i); + + if (rand() & 1) + sa_thread_yield(); + } +} + +int main(int argc, char *argv[]) { + int j; + sa_thread_t *t; + sa_asyncq_t q; + sa_asyncq_item_t *i; + + sa_assert_success(sa_asyncq_init(&q)); + + t = sa_thread_new(thread, &q); + sa_assert(t); + + for (j = 0; j < ITERATIONS_MAX; j++) { + + do { + i = sa_asyncq_pop(&q, 0); + printf("%s ", i ? "gotcha" : "miss"); + + if (i) + sa_asyncq_recycle(&q, i); + } while (i); + + if (rand() & 1) + sa_thread_yield(); + } + + printf("\n"); + + sa_thread_free(t); + + while (sa_asyncq_pop(&q, 1)) + ; + + sa_asyncq_done(&q); + + + return 0; +} -- cgit