Esempio n. 1
0
static void asyncmsgq_free(pa_asyncmsgq *a) {
    struct asyncmsgq_item *i;
    pa_assert(a);

    while ((i = pa_asyncq_pop(a->asyncq, false))) {

        pa_assert(!i->semaphore);

        if (i->object)
            pa_msgobject_unref(i->object);

        if (i->memchunk.memblock)
            pa_memblock_unref(i->memchunk.memblock);

        if (i->free_cb)
            i->free_cb(i->userdata);

        if (pa_flist_push(PA_STATIC_FLIST_GET(asyncmsgq), i) < 0)
            pa_xfree(i);
    }

    pa_asyncq_free(a->asyncq, NULL);
    pa_mutex_free(a->mutex);
    pa_xfree(a);
}
Esempio n. 2
0
int main(int argc, char *argv[]) {
    pa_asyncq *q;
    pa_thread *t1, *t2;

    pa_assert_se(q = pa_asyncq_new(0));

    pa_assert_se(t1 = pa_thread_new("producer", producer, q));
    pa_assert_se(t2 = pa_thread_new("consumer", consumer, q));

    pa_thread_free(t1);
    pa_thread_free(t2);

    pa_asyncq_free(q, NULL);

    return 0;
}